2013-03-11 22 views
5

我有PostgreSQL的8.4兩臺服務器:如何在PostgreSQL中將表從服務器複製到另一個表中?

server1:5432 
server2:5432 

現在我想從server1複製表,並把它在數據的基礎上Server2上。
它可能做什麼?

UPDATE

我嘗試做像@Valery Viktorovsky的回答是:

pg_dump --server1:5432 --encoding=utf8 --no-owner --username=postgres --123456 np_point > D:\np_point.sql 
psql --server2:5432 --username=postgres mrsk -f D:\np_point.sql 

,並得到錯誤:

ERROR: syntax error at or near "pg_dump" 
LINE 1: pg_dump --server1:5432 --encoding=utf8 --no-owner --use... 

回答

8

最安全的方法是使用pg_dump的。使用

1. pg_dump --host server1 --encoding=utf8 --no-owner --username=foo --password -t table_name db_name > server1_db.sql 
2. psql --host server2 --username=foo db_name -f server1_db.sql 
+0

它不能重寫Server2上的數據庫? – 2013-03-11 09:45:03

+0

不,這取決於哪些數據已經存儲在server2上。可以從server2.table_name中刪除數據,然後導入新數據。 – 2013-03-11 09:50:25

+0

這個部分是什麼意思:'db_name> server1_db.sql'? – 2013-03-11 09:52:29

3

試試這個

在psql COPY命令。連接到Server1和export to CSV然後連接到服務器2和import from CSV

+0

在'COPY TO products_273 '/tmp/products_199.csv' DELIMITER '' CSV HEADER;'請告訴我平均DELEMITER? – 2013-03-11 09:54:40

+1

分隔符是一個字符,用於爲導出的表格行中的下一個分隔每列。閱讀關於[CSV](http://en.wikipedia.org/wiki/Comma-separated_values)的更多信息,它是一種用於導入/導出東西的非常常見和簡單的格式,不僅可以從/到數據庫,也可以從任何其他應用程序支持它。 – A4L 2013-03-11 10:01:11

+0

我嘗試'COPY TO np_point 'C:/np_point.csv' DELIMITER '' CSV HEADER;'PostgreSQL的說:'查詢成功返回:6004行的影響,31毫秒執行time.'但我不能找到CSV文件。 – 2013-03-11 10:10:51

1

這會從特定的數據庫只複製特定表到目標數據庫

pg_dump -h localhost -U postgres -p 5432 -C -t table_name source_db_name | ssh -C [email protected] "psql -h localhost -U postgres -p 5432 destination_db_name" 
相關問題