14

異なるマシン (PostgreSQL) で同じデータベース スキーマに取り組んでいます。あるマシンから別のマシンにデータをマージする方法を知りたいです。スキーマには多くのテーブル (約 10) があります。私は何を達成したいですか?

  1. マシン A からファイル A.dmp にデータをダンプします。
  2. ファイル A.dmp からマシン B にデータを復元する
  3. マシン B に既にレコードが存在する場合、それをマシン B に挿入したくありません。

マシン A から単純な SQL 挿入コマンドにデータをダンプしようとしましたが、それを復元しようとすると、重複キー エラーが発生します。さらに、コマンド ラインからデータを復元したいと考えています (250 MB のデータをインポートする必要があります)。

それを行う最良の方法は何ですか?

4

1 に答える 1

12

私は最終的にこのようにしました:

  1. 次を使用してダンプにエクスポートします。

    pg_dump -f dumpfile.sql --column-inserts -a -n <schema> -U <username> <dbname>
    
  2. すべてのテーブルに一意のスキップを設定

    CREATE OR REPLACE RULE skip_unique AS ON INSERT TO <table>
        WHERE (EXISTS (SELECT 1 FROM <table> WHERE users.id = new.id)) 
        DO INSTEAD NOTHING
    
  3. インポートpsql

    \i <dumpfile.sql>
    
于 2013-11-25T18:38:49.887 に答える