2014-01-29 95 views

回答

35

pg_restore,當沒有數據庫名稱運行時,輸出一個文本轉儲到標準輸出;您可以使用-f或I/O重定向將其他地址發送到其他地方。

pg_restore -f mydatabase.sql mydatabase.dump 
+1

當我嘗試這樣做時,我得到'pg_restore:[archiver]輸入文件似乎不是有效的歸檔文件'。我可以向你保證,轉儲是使用相同版本的postgresql 8.4.17製作的。 – sorin

+0

對不起,我剛剛發現那個做備份的人,在使用-Fc之後就把它們壓縮了! ...和MC查看顯示我的文件視圖上的未壓縮內容... – sorin

+0

這工作,謝謝 – Tom

5

,我用最快的方法是:

pg_restore mybinaryfile.backup > mysqlfile.sql 

沒有特殊標誌,因爲pg_restore剛剛吐出它到標準輸出。

0

請注意,如果你運行多個集羣,restore命令可能不喜歡默認的版本...

pg_restore的:[歸檔]在文件頭不支持的版本(1.12)

在這種情況下,你必須指定版本,主機和端口爲:

pg_restore --cluster 9.1/localhost:5433 -f db.sql db.pgsql 

(注意:host:port信息與-f選項忽略)

的端口(5433)可以使用pgsql命令作爲確定:

pgsql --port 5433 template1 

pgsql連接時,將其寫入評論如:

PSQL(9.3.6,服務器9.1.13)

這意味着您正在運行pgsql 9.3.6,並且該端口5433引用了服務器9.1.13。

如果你不知道這是目前使用的端口,你可以使用netstat命令,如:

sudo netstat -a64np | grep LISTEN | grep postgres 

sudo是必需的-p選項,打印進程名。這給你一個端口列表(通常是TCP和UDP端口)。

最後一個Debian/Ubuntu系統上,你可以得到的dpkg -l命令安裝羣集的列表,如:

dpkg -l '*postgres*' 

與啓動項列表「II」(最左列)目前已安裝。當然,您對其他Unices也有類似的命令來幫助您確定安裝的版本。

相關問題