Comparez deux bases de données Postgres similaires pour les différences

14

Je télécharge occasionnellement des ensembles de données accessibles au public sous la forme de dB Postgres. Ces jeux de données sont mis à jour / modifiés / développés au fil du temps par l'hôte du référentiel.

Existe-t-il une commande ou un outil Postgres (idéalement FOSS) qui peut montrer les différences entre une ancienne et une nouvelle base de données Postgres? (Une hypothèse de travail est que 95% des entrées sont inchangées et que les tables et les relations ne changent pas non plus).

CuriousGorge
la source
1
Qu'avez-vous fini par utiliser? Aucune des réponses ne semble vraiment avoir de solution.
nyov

Réponses:

10

Jetez un œil aux questions et réponses sur le débordement de pile, Comment vérifier la différence entre deux bases de données dans PostgreSQL? ; en particulier Another PostgreSQL Diff Tool (apgdiff) (comparaison de schémas uniquement). Apgdiff est recommandé par Alexander Kuznetsov - un auteur de livre de base de données publié et un peu un gourou.

Peut-être aussi regardez Liquibase ou Compare Database Table Data .

Il existe également des produits commerciaux - par exemple, la différence de base de données Altova avec DiffDog

Vérace
la source
1
apgdiff ne compare pas les données des tableaux, metaqa est sorti en 2008 et est cassé. La différence de base de données de liquibase n'est pas adaptée au cas d'utilisation des PO: "Différences de données (limitées), non vérifiées par défaut"
nyov
2

Il y a aussi:

Postgres Comparer
la source
1
pgdiff ne compare pas les données de table.
nyov
0

Si vous avez besoin de quelque chose d'assez rapide et sale pour comparer les schémas, j'ai écrit cet essentiel pour aider à comparer un schéma en cours d'exécution à un "dernier" schéma - quelque chose peut-être hébergé dans SCM. Cela fonctionne assez bien pour un projet de ~ 50 tables.

Copain
la source
Ne compare pas les données de table.
nyov
C'était correct pour mes besoins. Je n'avais besoin que de comparer les schémas - les données à l'intérieur n'étaient pas aussi importantes. Je suis sûr que ce n'est pas loin de pouvoir comparer les données si vous pouvez en quelque sorte contrôler l'ordre du vidage pour être déterministe entre les versions / installs / etc.
Buddy
Ça va. J'étais juste frustré que personne n'ait eu une bonne réponse à la question réelle sofar (qui indique spécifiquement "Une hypothèse de travail est que 95% des entrées sont inchangées et que les tables et les relations ne changent pas non plus ".)
nyov