Мы сохраняем 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– извлекает каждый объект базы данных в свой собственный файл. Это то, что я в итоге использовал.
Я обновлю этот пост по мере нахождения лучших решений.