Какие существуют альтернативные форматы pg_dump для сравнения схем?

Какие существуют альтернативные форматы pg_dump для сравнения схем?

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

Я обновлю этот пост по мере нахождения лучших решений.

Связанный контент