2016-09-14 94 views

回答

3

在兩個數據庫是在兩個不同的服務器實例的情況下,你可以在CSV從db1導出,然後在db2導入數據:

COPY (SELECT * FROM t1) TO '/home/export.csv'; 

,然後加載回db2

COPY t2 FROM '/home/export.csv'; 

此外,兩個不同數據庫實例上的兩個表必須具有相同的結構。

使用命令行工具:的pg_dump和psql,你可以做,即使在這樣:

pg_dump -U postgres -t t1 db1 | psql -U postgres -d db2 

您可以指定命令行參數都pg_dumppsql指定的地址和/或端口服務器 。

另一種選擇是使用外部工具,例如:openDBcopy來執行表的遷移/複製。

+0

第一條語句在Postgres中不受支持,您不能像這樣在不同的數據庫中引用表。 (再說'db2.t2'在_schema_'db2',而不是「數據庫」 DB2引用表) –

+0

看看更新的答案,我誤解了問題。 – aleroot

+0

第一條語句將** **不跨數據庫的工作(只跨_schema_這就是你的發言做) –

0

我建議SQL Workbench/J。它具有很好的功能,即Data Pumper。您可以選擇跳過列ID。如果我使用GUI模式,這個圖像(Data Pumper in action)就是一個例子。 下面的代碼,如果我使用控制檯模式。

WbCopy -sourceProfile=source 
    -sourceGroup=DB1 
    -targetProfile=target 
    -targetGroup=DB2 
    -targetTable=table2 
    -sourceTable=table1 
    -columns='sales_code/sales_code, store_sid/store_sid, pos_id/pos_id' 
    -ignoreIdentityColumns=false 
    -deleteTarget=true 
    -continueOnError=true 
    -commitEvery=1000; 
+0

這個答案非常廣泛,並且有垃圾郵件的味道。請編輯以提供更具體的問題答案。考慮使用代碼來描述解決提問者的問題。 –

+0

我在GUI模式下使用該功能。這就是我發佈屏幕截圖而不是代碼的原因。然而,如果我使用控制檯模式,我已經添加了代碼示例。 –

+0

您編輯的答案看起來不錯。你的頭像可能會冒犯人們。 –

相關問題