1にマージする必要がある2つのpostgresqlデータベースにデータがあります。明確にするために、両方のデータベースには、結合する必要がある特定の日付からの「適切な」データがあります。これは単にデータを別のデータに追加するだけではありません。つまり、テーブル foo にシリアル id フィールドがあるとします。両方のデータベースに ID=5555 の foo があり、両方の値が有効です (ただし異なります)。したがって、ターゲット データベースの foo は 5555 を保持し、新しいレコードは nextval(foo_id_seq) の新しい ID で追加されます。
だから、それは大混乱です。
私の考えは、ターゲット データベースに tmp スキーマを作成し、ソース データベースから必要なデータをコピーすることです。次に、基本的にデータを「アップサート」する必要があります。新しいアイデアで新しいレコードが挿入され (および外部キーが更新され)、両方のデータベースに存在するレコードが更新されます。
これに役立つツールがあるとは思いません。
私の質問。
新しい ID の生成を処理するにはどうすればよいですか? 選択を介して id 列を除外するだけでそれを実行できることはわかっていますが、それは大量の入力であり、遅くなります。私の考えは、挿入時に提供された ID をオーバーライドするこれらのテーブルの一時的なトリガーを作成することです。
最後に注意:
- 両方のデータベースがオフラインです。そして、彼らにたどり着くことができるのは私だけです。
- 両方のデータベースのスキーマはまったく同じです
- ターゲット データベースは 9.2 です