2017-11-06 36 views
0

私は現在、顧客のデータベースの1つをこの顧客の基本構造から新しいデータベースを作成することができるようにダンプしていますが、彼らの私的なデータに沿って。pg_dumpからテーブル上の外部キー制約を強制する--exclude-table-data

これまでのところ、私はpg_dump--exclude_tableexclude-table-dataのコマンドを組み合わせて成功させました。これは、私がこの作業に効果的に必要なデータだけを持って来ることを可能にしました。

しかし、私が持っていたデータを参照する他の行と一緒に残したデータの一部を参照する行が混在するテーブルがいくつかあり、これは復元操作中に私にいくつかの問題を引き起こしています。具体的には、ダンプがこれらのテーブルの特定の列に対してFOREIGN KEYの制約を適用しようとすると、このテーブルのデータを持たないため、それぞれの外部テーブルに一致するデータがないキーがある行があるため失敗します。

ダンプの完了後にデータベースにログインできることは分かっていますが、もはや存在しないデータを参照する行を削除して自分で制約を作成することができますが、できるだけプロセスを自動化したいと思います。 pg_dumpまたはpg_restore(または他のプログラム)が、テーブルBを参照する場合はテーブルAから行を持ち出さないように指示する方法はありますか?テーブルBのデータはバックアップから除外されていますか?あるいは、テーブルのデータをインポートする前に、その特定の外部キーをアクティブにしたいとPostgresに指示しますか?

参考までに、私はPostgreSQL 9.2をHREL 7サーバで使用しています。

答えて

0

データベースダンプの復元時に外部キーチェックを無効にするとどうなりますか?その後、参照テーブルから孤独な行を削除します。

ところで、データベーススキーマを修正して、誤ったタプルがデータベースに挿入されることがないようにすることをお勧めします。