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으로 diff 친화적인 스키마를 생성합니다.
- http://schemaspy.org/- 내가 찾던 것은 아니지만 현재 스키마를 문서화하는 좋은 방법으로 발견되었습니다.
- https://github.com/keithf4/pg_extractor– 각 데이터베이스 개체를 자체 파일로 추출합니다. 이것이 내가 사용한 것입니다.
더 나은 솔루션을 찾으면 이를 업데이트하겠습니다.