2014-06-28 59 views
0

我有兩個Postgresql服務器(Windows),並且我試圖將一個表從server1傳輸到server2。該表包含二進制數據,大小約爲200 MB。 我想把表放入一個USB棒,然後將它移動到第二臺服務器。 (假定兩臺服務器沒有通過LAN連接)。 這樣做最簡單的方法是什麼?你能用命令來描述道路嗎?將表從server1移動到server2

+0

導出然後導入?你有什麼問題? –

+0

是的,當導入錯誤消息顯示,因爲大小很大,我導出到sql文件。 – Aan

+0

什麼是錯誤信息?請發佈一些更多詳細信息 –

回答

2

最簡單的方法可能是使用pg_dump。我沒有在Windows上使用它,所以我不知道它的實際路徑,但它應該在Postgres \ bin目錄中,並且需要在shell窗口中執行它(如PowerShell或CMD) 。

假設你已經給每個服務器控制檯訪問,並且該表已經存在於第二個數據庫:

pg_dump -a -b -Fc -t <tablename> <databasename> > <path to dump file> 

然後,當你有它移動到新的服務器。

pg_restore -a -Fc -d <databasename> <path to dump file> 

如果你沒有到每個服務器的直接訪問,那麼你需要連接參數添加到每個命令:

-h <server> -U <username> 

參數的簡單描述:

  • -a:只轉儲數據而不轉儲模式定義。如果該表尚未就位於新服務器上,應該將其刪除。
  • -b:轉儲blob。您提到表中有二進制數據,如果它們存儲爲大對象,則需要包含此參數,否則可以跳過它。
  • -Fc:將數據轉儲爲的格式。 c代表Postgres自定義格式,它更適合移動二進制數據。您可以將它更改爲d以使用目錄格式,因爲您使用的是9.2,但我更喜歡自定義格式。 d但在轉儲大型數據庫時很有用,因爲它將每個表存儲在指定目錄中的一個文件中。
  • -t:指定要轉儲表而不是整個數據庫。
  • -d:要恢復到數據庫中(這個參數可以在pg_dump的使用爲好,但如果如上規定不需要)

還有就是你需要添加的可能性-t參數還原,但據我記得,它不應該是必要的,因爲你只有在轉儲中的表(然而,如果你有轉儲中的幾個表,例如,如果它是一個完整的轉儲的數據庫,這可以用來只恢復部分數據庫)。

相關問題