我們將pg_dump
產生的模式 DDL 儲存在版本控制中。
我們發現比較pg_dump
應用遷移腳本之前/之後的輸出可以更好地了解正在應用的變更。
但是,我面臨的pg_dump
輸出問題是相關物件更改遍布整個文件。因此,當您的變更影響架構中的多個物件時,就很難看到相關的變更。
我想知道是否有任何替代格式可以匯出資料庫模式只是為了比較它們,例如我正在考慮使用 psql 生成物件的 ascii 表表示。
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 格式的差異友善模式。
- http://schemaspy.org/- 不是我正在尋找的,但發現它是記錄當前模式的好方法。
- https://github.com/keithf4/pg_extractor– 將每個資料庫物件提取到自己的檔案中。這就是我最終使用的。
當我發現更好的解決方案時,我會更新此內容。