pg_dump
生成されたスキーマ DDL をバージョン管理に保存しています。
pg_dump
移行スクリプトを適用する前と適用した後の出力を比較すると、適用されている変更をよりよく理解できることがわかります。
しかし、出力に関して私が直面している問題は、pg_dump
関連オブジェクトの変更がファイル全体にわたっていることです。そのため、スキーマ内の複数のオブジェクトに影響する変更があった瞬間に、関連する変更を確認するのが難しくなります。
比較する目的でデータベース スキーマをエクスポートできる代替形式があるかどうか知りたいのですが、たとえば、オブジェクトの ASCII テーブル表現を生成するために psql を使用することを検討しています。
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
答え1
私の質問に対する答えにはなりませんが、私が見つけたことを文書化します。
- 単に使用して
\dt+ *.*
データベース全体のpsql記述を生成する - https://www.schemacrawler.com/output.html よりプレーンテキスト、HTML、JSON で diff 対応スキーマを生成します。
- http://schemaspy.org/ より- 私が探していたものではありませんが、現在のスキーマを文書化する優れた方法として発見しました。
- https://github.com/keithf4/pg_extractor– 各データベース オブジェクトを独自のファイルに抽出します。最終的にこれを使用しました。
より良い解決策が見つかったら、これを更新します。