J'ai évalué un grand nombre d'outils et j'ai trouvé la solution suivante :
Comparaison des schémas :
Les plus intéressants étaient Liquibase, Persyas et PgCodeKeeper :
( numéro ) Liquebase se convertit :
SET DEFAULT nextval('myschema.name_id_seq'::regclass)
en
BIGSERIAL
Il a donc été rejeté d'utiliser
( numéro ) Persyas fonctionnait bien jusqu'à ce que j'ajoute des schémas supplémentaires et qu'il commence à envoyer les messages suivants :
pyrseas_1 | TypeError: 'NoneType' object is not iterable
J'ai donc trouvé PgCodeKeeper il fonctionne parfaitement et il est vivant (vous pouvez vérifier les releases). J'utilise la commande suivante :
./pgcodekeeper-cli.sh -E -I ./ignore.txt \
-s "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-t "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-o /result/schema-diff-$(date +'%m%d%y_%H%M%S').sql
Comparaison des données : J'ai essayé d'utiliser Liquebase et cela ne fonctionne 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 Banc d'essai SQL/J Il fonctionne très bien et génère de vraies différences en sql. J'utilise la commande suivante :
java -jar /sqlworkbench.jar -command="'WbDataDiff -excludeTables=$EXCLUDE_TABLES \
-referenceConnection=$REFERENCE_CONNECTION \
-targetConnection=$TARGET_CONNECTION -referenceSchema=$1 \
-targetSchema=$1 -file=$DIFF_RESULT_FILE -singleFile=true \
-includeDelete=true -ignoreMissingTarget=true ;'"
Les deux outils prennent en charge le filtrage des objets. C'est vraiment pratique.
Migrations
Et enfin, j'utilise Liquebase uniquement pour la migration/le suivi des versions.
0 votes
Voir aussi stackoverflow.com/q/2178907/453605
0 votes
dbForge Data Compare pour PostgreSQL résout ces problèmes.
0 votes
postgrescompare.com/downloads compare aussi les données maintenant