Compare dois bancos de dados semelhantes do Postgres para diferenças

13

Ocasionalmente, faço download de conjuntos de dados publicamente disponíveis na forma de dBs do Postgres. Esses conjuntos de dados são atualizados / modificados / expandidos ao longo do tempo pelo host do repositório.

Existe um comando ou ferramenta do Postgres (idealmente FOSS) que possa mostrar as diferenças entre um banco de dados OLD e NEW Postgres? (Uma suposição de trabalho é que 95% das entradas permaneçam inalteradas e que as tabelas e os relacionamentos também não sejam alterados).

CuriousGorge
fonte
1
O que você acabou usando? Nenhuma das respostas realmente parece ter uma solução.
Nyov 01/09/19

Respostas:

10

Dê uma olhada nas Perguntas e Respostas sobre Stack Overflow, Como verificar a diferença entre dois bancos de dados no PostgreSQL? ; em particular Outra Ferramenta de Diferença do PostgreSQL (apgdiff) (somente comparação de esquemas). Apgdiff é recomendado por Alexander Kuznetsov - um autor de livro de banco de dados publicado e um pouco de guru.

Talvez também veja Liquibase ou Compare dados da tabela do banco de dados .

Também existem produtos comerciais - por exemplo, Altova Database Differencing with DiffDog

Vérace
fonte
1
O apgdiff não compara os dados da tabela, o metaqa foi lançado pela última vez em 2008 e está quebrado. O diff do banco de dados do liquibase não é voltado para o caso de uso dos OPs: "Diferenças de dados (limitadas), não verificadas por padrão"
nyov
2

Há também:

  • PgDiff
  • e a ferramenta em que estou trabalhando no Postgres Compare, que é gratuito enquanto estiver na versão beta
Postgres Compare
fonte
1
O pgdiff não compara os dados da tabela.
Nyov 01/09/19
0

Se você precisar de algo bastante rápido e sujo para comparar esquemas, escrevi esta essência para ajudar a comparar um esquema em execução com um esquema "mais recente" - algo que talvez esteja hospedado no SCM. Está funcionando bastante bem para um projeto de ~ 50 tabelas.

camarada
fonte
Não compara os dados da tabela.
Nyov 01/09/19
Isso foi bom para minhas necessidades. Eu só precisava comparar esquemas - os dados internos não eram tão importantes. Tenho certeza de que não está longe de ser capaz de comparar dados, se você pode, de alguma forma, controlar a ordem do dump para ser determinística em versioins / installs / etc.
Amigo
Está bem. Fiquei frustrado porque ninguém tinha uma boa resposta para a questão real (que afirma especificamente "Uma suposição de trabalho é que 95% das entradas permanecem inalteradas e que as tabelas e os relacionamentos também não mudam ".)
nyov