2012-07-10 52 views
0

我需要一次性將PostgreSQL數據庫中的一個表中的數據複製到另一個數據庫中的相應表中。沒有那麼多的數據:大約2500行,8列(一些數字,一些varchar)。在postgres數據庫之間複製數據

我的第一個想法是在另一個數據庫上簡單地pg_dump -a -t table -f output.file,然後pg_restore。然而,事實證明,中pg_dump版本和源服務器不匹配 - 和我有過的版本,沒有控制,所以升級不是一個選項:

pg_dump: server version: 9.1.2; pg_dump version: 9.0.5 
pg_dump: aborting because of server version mismatch 

不幸的是,隨着版本的Postgres 9,選項-i(忽略版本)不再可用。我知道我在做什麼,但它仍然不會讓我(自然)。

我還有其他選擇嗎?

+0

你是否嘗試使用純文本轉儲('pg_dump -Fp')? (這是一個使用'psql'「恢復」的SQL腳本) – 2012-07-10 10:21:03

+0

只要遇到版本不匹配,pg_dump就會立即中止,而不會查看其他任何東西 – 2012-07-10 10:31:25

+0

只有當你走錯了方向纔會停止。即8.4.13中的pg_dump可以從8.3.x轉儲而不會出錯。 – 2012-07-10 13:08:04

回答

0

我會用COPY TOCOPY FROM。適用於任一版本,並且是最佳工具。

如果你想使用pg_dump,你必須使用適當的版本。每個版本都有獨立的可執行文件。在Linux上,您可以通過which pg_dump獲得當前使用的可執行文件的路徑。

+0

完美! 'COPY TO'(和'COPY FROM')正是我一直在尋找的東西。 – 2012-07-10 10:30:41