質問

2つのデータベースを同じ構造と比較することは可能ですか?たとえば、2つのデータベースDB1とDB2があり、それらの間にデータに違いがあるかどうかを確認したいと思います。

役に立ちましたか?

解決

そこにはいくつかのツールがあります:

(これらのツールのほとんどは構造のみを比較できるが、データは比較できないことに注意してください)

無料のもの:

商業:

他のヒント

使用してみてください pg_dump 両方のデータベースとファイルの違い。

別の無料アプリ(それ 構造のみを比較できますが、データは比較できません):

dbeaver - データベース、テーブルなどを選択して、互いに比較できます

Postgresの包括的な比較ツールに取り組んでいます。ベータ版にいる間は無料になります。

PostgresCompare

最初はこれは単なるスキーマ(DDL)比較ですが、おそらくデータにも拡大するでしょう。これは、多くのショップが、開発環境、操作などを変更することもなく、現在のRDBMSから移動するために必要なツールだと思います。

私は多くのツールを評価し、次の解決策を見つけました。

スキーマ比較:

最も興味深いのは、リキバーゼ、ペルシャス、PGCodeKeeper:

(問題)リキューベース変換:

 SET DEFAULT nextval('myschema.name_id_seq'::regclass)

の中へ

BIGSERIAL

そのため、使用することは拒否されました

(問題)Persyasは、いくつかの追加スキーマを追加するまで順調に機能しましたが、次のようにスローし始めます。

pyrseas_1       | TypeError: 'NoneType' object is not iterable

だから私は見つけました pgcodekeeper それは完全に機能し、生きています(リリースを確認できます)。次のコマンドを使用します。

./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

データ比較:私はリキベースを使用しようとしましたが、それが機能しないだけで、私の未回答の質問で試した手順を見ることができます Liquebaseを使用した2つのデータベースのデータの違いについて

だから私は別のプロジェクトを見つけました SQLワークベンチ/jそれは本当にうまく機能し、SQLでReall Diffを生成します。次のコマンドを使用します。

  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 ;'"

どちらのツールもオブジェクトのろ過をサポートしています。本当に便利です。

移行

そして最後に、移行/バージョンの追跡にのみLiquebaseを使用します。

私が今まで見た中で最高のツールhttps://pythonhosted.org/pyrseas/

  1. データベースからダンプを入手してくださいadbtoyaml ...

  2. a => b yamltodbからの移行を生成... [ステップ1で生成されたファイル

また、データベースのデータを比較するツールも探しています(特に、Redshift DBを比較することに興味がありました)。これまでのところ、私が見つけたのは最高です https://www.dbbest.com/products/database-compare-suite/#close。残念ながら、無料の裁判は1日後に期限切れになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top