2016-12-27 18 views
0

我在Mac Sierra上使用Postgres 9.5。我想從本地機器導出一些表數據並將其導入Linux機器上的Postgres 9.5數據庫。注意:我不想在Linux機器上刪除數據,只將本地機器錶行添加到Linux環境中表中已存在的行(並忽略重複項)。所以,我的本地機器上,我跑如何將一些數據導出到本地Postgres數據庫並將其導入到遠程而不刪除遠程的所有數據?

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

但是我的遠程機器上,當我嘗試導入該文件,我得到的錯誤

[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的,因爲我不想刪除現有的表格數據,我只是想添加它。我怎樣才能做到這一點?

回答

1

使用--format plain而不是custom其中之一。後者旨在專門與pg_restore一起使用。普通格式還允許您使用文本編輯器查看轉儲的數據,並驗證這是否是您想要的。

但是我快速的測試表明,它也有可能與pg_restore和追加數據的自定義格式的數據,僅轉儲:

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

有沒有什麼辦法讓INSERT命令包含的列以及值是多少?這兩個表必須有不同的順序列,因爲我得到「命令是: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) –

相關問題