我们将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– 将每个数据库对象提取到其自己的文件中。这是我最终使用的。
当我发现更好的解决方案时,我会更新此内容。