Aqui está um script útil para pré-processar
pg_dump
output para torná-lo mais adequado para diferenciar e armazenar no controle de versão:https://github.com/akaihola/pgtricks
pg_dump_splitsort.py
divide o dump nos seguintes arquivos:0000_prologue.sql
:tudo até a primeira CÓPIA0001_<schema>.<table>.sql
.
.NNNN_<schema>.<table>.sql
:dados para cada tabela classificados pelo primeiro campo9999_epilogue.sql
:tudo após a última CÓPIA
Os arquivos para dados de tabela são numerados para que uma simples concatenação ordenada de todos os arquivos possa ser usada para recriar o banco de dados:
$ cat *.sql | psql <database>
Descobri que uma boa maneira de dar uma olhada rápida nas diferenças entre dumps é usar o
meld
ferramenta em todo o diretório:$ meld old-dump/ new-dump/
Armazenar o dump no controle de versão também oferece uma visão decente das diferenças. Veja como configurar o git para usar cores nos diffs:
# ~/.gitconfig
[color]
diff = true
[color "diff"]
frag = white blue bold
meta = white green bold
commit = white red bold
Observação: Se você criou/descartou/renomeou tabelas, lembre-se de excluir todos os
.sql
arquivos antes de pós-processar o novo dump.