Est-il possible de comparer deux bases de données de structure identique? Disons que j'ai deux bases de données DB1 et DB2 et que je veux vérifier s'il existe une différence de données entre elles.
postgresql
schema-compare
Sennin
la source
la source
Réponses:
Il existe plusieurs outils:
(notez que la plupart de ces outils ne peuvent comparer que la structure, mais pas les données)
Gratuits:
Commercial:
la source
apgdiff
cela ne supporte pas bien les tables d'héritage, et une exception se déclenche immédiatement lorsque j'essaie de l'utiliser.WbSchemaDiff
fonctionne très bien, surprise!Essayez d'utiliser
pg_dump
sur les deux bases de données et en différant les fichiers.la source
pg_dump
c'est bien pour cela. Si vous voyez des différences significatives avecpg_dump
vous essayez probablement de comparer des choses qui ne sont pas comparables. Au moins pour comparer les dbs PG.psql -c '\x' -c 'SELECT... ORDER BY...'
au lieu depg_dump
.Une autre application gratuite (qui ne peut comparer que la structure, mais pas les données ):
DBeaver - vous pouvez sélectionner des bases de données, des tables, etc. à comparer les unes avec les autres
la source
J'ai évalué de nombreux outils et trouvé la solution suivante:
Comparaison de schéma :
Les plus intéressants étaient Liquibase, Persyas et PgCodeKeeper:
( problème ) Liquebase convertit:
SET DEFAULT nextval('myschema.name_id_seq'::regclass)
dans
Il a donc été refusé d'utiliser
( problème ) Persyas a bien fonctionné jusqu'à ce que j'aie ajouté un schéma supplémentaire et qu'il commence à lancer ce qui suit:
J'ai donc trouvé PgCodeKeeper qu'il fonctionne parfaitement et qu'il est vivant (vous pouvez vérifier les versions). J'utilise la commande suivante:
Comparaison de données: j'ai essayé d'utiliser Liquebase et cela ne fonctionne tout simplement pas, vous pouvez voir les étapes que j'ai essayées dans ma question sans réponse sur la différence de données de deux bases de données avec Liquebase
J'ai donc trouvé un autre projet SQL Workbench / J. Cela fonctionne vraiment bien et génère des différences réelles dans SQL. J'utilise la commande suivante:
Les deux outils prennent en charge la filtration d'objets. C'est vraiment pratique.
Migrations
Et enfin j'utilise Liquebase uniquement pour le suivi de la migration / version.
la source
Je travaille sur un outil de comparaison complet pour Postgres. Ce sera gratuit en version bêta.
PostgresComparer
Au départ, il ne s'agit que d'une comparaison de schéma (DDL), mais nous allons probablement étendre également aux données. Je crois que c'est un outil dont beaucoup de magasins ont besoin pour quitter leur SGBDR actuel sans avoir à changer également le fonctionnement de leurs environnements de développement, de leurs opérations, etc.
la source
Le meilleur outil que j'ai jamais vu https://pythonhosted.org/Pyrseas/
Obtenir un vidage de la base de données A dbtoyaml ...
Générer la migration de A => B yamltodb ... [fichier généré à l'étape 1]
la source
Je recherche également un outil pour comparer des données dans des bases de données (en particulier j'étais intéressé par la comparaison de Redshift DB). Jusqu'à présent, le meilleur que j'ai trouvé est https://www.dbbest.com/products/database-compare-suite/#close . Malheureusement, l'essai gratuit expire après un jour.
la source
J'ai créé un outil pour comparer 2 bases de données PostgreSQL en direct (pas de vidages), des données de table et des séquences. Assez tôt mais j'ai réalisé ce que je voulais, peut-être que cela peut vous aider aussi.
https://github.com/dmarkey/pgdatadiff
la source
À mon avis, Dbforge est l'outil le plus puissant pour la compilation de données dans postgresql. C'est un produit de la société Devart que vous pouvez télécharger ici .
la source