Estamos almacenando pg_dump
el esquema DDL producido en nuestro control de versiones.
Descubrimos que comparar pg_dump
la salida antes y después de aplicar los scripts de migración da una mejor idea de los cambios que se están aplicando.
Sin embargo, el problema al que me enfrento con pg_dump
la salida es que los cambios de objetos relacionados se encuentran en todo el archivo. Por lo tanto, en el momento en que se realiza un cambio que afecta a varios objetos del esquema, resulta difícil ver los cambios relacionados.
Me pregunto si hay algún formato alternativo en el que pueda exportar esquemas de bases de datos simplemente con el propósito de diferenciarlos; por ejemplo, estoy considerando usar psql para generar una representación de objetos en una tabla 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
Respuesta1
Difícilmente sea una respuesta a mi pregunta, pero documentaré lo que encontré:
- simplemente usando
\dt+ *.*
para generar una descripción psql de toda la base de datos - https://www.schemacrawler.com/output.htmlgenera un esquema compatible con diferencias en texto plano, HTML y JSON.
- http://schemaspy.org/- no es lo que estaba buscando, pero lo descubrí como una excelente manera de documentar el esquema actual.
- https://github.com/keithf4/pg_extractor– extrae cada objeto de la base de datos en su propio archivo. Esto es lo que terminé usando.
Actualizaré esto a medida que descubra mejores soluciones.