Frage

Wenn Sie Pgadminiii an einen PostgreSQL 9.x -Server verbinden, finden Sie zwei Kataloge, die in der Benutzeroberfläche aufgeführt sind: ANSI (Informationsschema) und PostgreSQL (pg_catalog).

Ich suche eine Dokumentation, die die Zuordnung zwischen beschreibt

  • Datenbankobjekte und die Systemtabellen
  • Die Systemtabellen und die Information_Schema -Ansichten

Zum Beispiel möchte ich in der Lage sein, einen Sequenznamen aus einer Datenbank zu nehmen und schnell zu sagen, wo die Sequenz selbst, der Name der Sequenz und die ACL der Sequenz (aus Grant and Revoke -Anweisungen) in beiden gefunden werden würden Die Systemtabellen und in den Ansichten von Information_Schema.

Ist das irgendwo dokumentiert? Ich habe die Online -Dokumentation von Postgresql durchgemacht und Details von beiden gefunden Ansi und PostgreSQL Kataloge, aber ich habe keine Dokumentation der Zuordnungen gefunden.

Aktualisieren

Es sieht so aus, als ob sich die Informationen wahrscheinlich in der Quelldatei Information_Schema.sql befinden, aber diese Datei scheint nicht im Online -Quellcode zu sein. (Siehe beispielsweise initdb.c at http://doxygen.postgresql.org/.)

War es hilfreich?

Lösung

Die Systemtabellen sind die Implementierung von Datenbankobjekten. Wenn Sie also sagen, rufen Sie eine Funktion an foo(), Die DBMs schauen hinein pg_proc Um zu sehen, ob es eine Funktion gibt foo Und was die Argumente und der Quellcode und so weiter sind. Das Layout und die Anordnung der Systemkataloge sind lediglich die Art und Weise, wie die Implementierer verschiedener Funktionen im Laufe der Zeit sie gemacht haben. Sie haben bereits auf die Dokumentation der Kataloge hingewiesen. In vielen Fällen gibt es beispielsweise eine einfache Zuordnung zwischen einer Funktion und pg_proc. In anderen Fällen, wie beispielsweise für einen Index, ist es etwas komplizierter. Sie müssen diese Informationen aus der Dokumentation oder vielleicht den vielen Beispielen für Systemkatalogfragen herausgraben.

Das Informationsschema wird vom SQL -Standard angegeben. Wenn Sie diese DDL -Befehle eingeben, sollte eine Abfrage des Informationsschemas diese Ergebnisse liefern, wenn Sie diese DDL -Befehle eingeben. In vielen Fällen gibt es erneut eine einfache Zuordnung zwischen Objekten und Informationsschema -Ansichten, aber in allen Fällen ist es nicht einfach. Die Aufrechterhaltung einer separaten Dokumentation der Zuordnung dieser Informationen wäre also umständlich und wahrscheinlich nutzlos. Das Prinzip ist das DDL -In -Informationsschema, nicht das, was in den PostgreSQL -Systemkatalogen geschieht.

Wenn Sie wissen, ob eine Sequenz in einer Katalogtabelle oder einer Informationsschemaansicht zu finden ist, müssen Sie letztendlich diese Tabellen abfragen. Die Realität ist zu kompliziert, dass dies einfacher ist. (Ich denke, ein Patch senden, wenn Sie eine bessere Idee haben.)

Andere Tipps

Da der größte Teil des Informationsschemas in Form von Ansichten gegen PG_CATALOG liegt psql:

psql -U postgres -c "\d information_schema.*" > information_schema.sql
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top