Wir speichern pg_dump
das erstellte Schema-DDL in unserer Versionskontrolle.
Wir stellen fest, dass ein Vergleich pg_dump
der Ausgabe vor/nach der Anwendung von Migrationsskripten einen besseren Eindruck von den angewendeten Änderungen vermittelt.
Das Problem, das ich bei der Ausgabe habe, pg_dump
ist jedoch, dass sich verwandte Objektänderungen überall in der Datei befinden. Sobald also eine Änderung vorliegt, die mehrere Objekte im Schema betrifft, wird es schwierig, verwandte Änderungen zu erkennen.
Ich frage mich, ob es alternative Formate gibt, in die ich Datenbankschemata einfach zum Zwecke der Differenzierung exportieren könnte. Ich denke beispielsweise darüber nach, psql zum Generieren einer ASCII-Tabellendarstellung von Objekten zu verwenden.
test=# \d+ question
Table "public.question"
Column | Type | Collation | Nullable | Default | Storage | Stats target | Description
---------------+---------+-----------+----------+--------------------------------------+----------+--------------+-------------
id | integer | | not null | nextval('question_id_seq'::regclass) | plain | |
question | text | | not null | | extended | |
interest_id | integer | | | | plain | |
slack_team_id | integer | | | | plain | |
Indexes:
"question_pkey" PRIMARY KEY, btree (id)
"question_question_slack_team_id_idx" UNIQUE, btree (question, slack_team_id)
"question_interest_id_idx" btree (interest_id)
"question_slack_team_id_idx" btree (slack_team_id)
Foreign-key constraints:
"question_interest_id_fkey" FOREIGN KEY (interest_id) REFERENCES interest(id) ON DELETE CASCADE
"question_slack_team_id_fkey" FOREIGN KEY (slack_team_id) REFERENCES slack_team(id) ON DELETE CASCADE
Referenced by:
TABLE "trivia_question" CONSTRAINT "trivia_question_question_id_fkey" FOREIGN KEY (question_id) REFERENCES question(id) ON DELETE CASCADE
Access method: heap
Antwort1
Das ist kaum eine Antwort auf meine Frage, aber ich werde dokumentieren, was ich herausgefunden habe:
- einfach durch
\dt+ *.*
um eine psql-Beschreibung der gesamten Datenbank zu generieren - https://www.schemacrawler.com/output.htmlgeneriert ein diff-freundliches Schema im Klartext, HTML und JSON.
- http://schemaspy.org/– nicht das, wonach ich gesucht habe, aber es ist eine großartige Möglichkeit, das aktuelle Schema zu dokumentieren.
- https://github.com/keithf4/pg_extractor– extrahiert jedes Datenbankobjekt in eine eigene Datei. Das ist, was ich letztendlich verwendet habe.
Ich werde dies aktualisieren, sobald ich bessere Lösungen entdecke.