2016-12-27 15 views
0

私はMac SierraでPostgres 9.5を使用しています。私は自分のローカルマシンからいくつかのテーブルデータをエクスポートし、それをLinuxマシン上のPostgres 9.5データベースにインポートしたいと思います。注意Linuxマシン上のデータを吹き飛ばすことは望ましくなく、Linux環境のテーブルに既に存在する行に自分のローカルマシンのテーブル行を追加するだけです(重複は無視します)。だから、私のローカルマシン上で、私は私がしようとすると、ファイルをインポートするとき、私はエラーにローカルのPostgresデータベースをエクスポートし、リモートからすべてのデータを削除せずにリモートにインポートするにはどうしたらいいですか?

[email protected]:/tmp$ psql db_production < t1.backup 
The input is a PostgreSQL custom-format dump. 
Use the pg_restore command-line client to restore this dump to a database. 

を取得しかし、私はためにpg_restoreを使用したくない、私のリモートマシン上でしかし

pg_dump -U myusername --format custom --section data --inserts --file "t1.backup" --table "table1" --table "table2" --table "addresses" "mydb" 

を走りました私は既存のテーブルデータを消去したくないので、単にそれに追加したいだけです。どうすればこれを達成できますか?

答えて

1

customの代わりに--format plainを使用してください。後者はpg_restoreと排他的に動作するように設計されています。プレーンフォーマットでは、ダンプされたデータをテキストエディタで見て、それがあなたが望むものであるかどうかを確認することもできます。

しかし、私の簡単なテストは、それがpg_restoreとでデータを追加することも可能だということを示してカスタム形式データのみのダンプ:

pg_restore -d db_production --data-only t1.backup 
+0

は、INSERTコマンドは、列と同様に値を含めるようにする方法はありますか? 2つのテーブルが異なる順序で列を持つ必要があります。「コマンドは次のとおりです。INSERT INTO table2 VALUES(NULL、NULL、1759000、 '2016-12-10 05:07:41.857082'、 '2016-12-10 05 :07:41.857207 '、' Jenny Sosh '... pg_restore:[archiver(db)]がクエリを実行できませんでした:ERROR:整数の入力構文が無効です: "a6a40213-dcd8-4312-9ff1-ae6c23b31ade" LINE 1: ...、 '7b1df57a-1fc3-4b89-a22b-6ecd33afbe63'、50,54、 'a6a40213 -...'というエラーは、同じ列が含まれていることを確認したにもかかわらずエラーになります。 – Dave

+0

'--column-inserts' (詳細はhttps://www.postgresql.org/docs/current/static/app-pgdump.htmlを参照してください) –

関連する問題