2014-05-21 84 views
2

我必須在Linux中創建postgresql數據庫備份(只有模式)並在窗口機器上恢復它。我用選項-E備份了數據庫,但是我無法在窗口機器上恢復它。在Linux中備份PostgreSQL數據庫

這裏是我給備份用的數據庫

pg_dump -s -E SQL_ASCII books > books.backup 

下面是當我試圖恢復它,我接收到該錯誤消息的命令。

C:/Program Files/PostgreSQL/9.3/bin\pg_restore.exe --host localhost --port 5432 --username "postgres" --dbname "books" --role "sa" --no-password --list "C:\progress_db\test1" 
pg_restore: [archiver] input file appears to be a text format dump. Please use psql. 

我應該使用不同的命令還是我錯過了什麼?非常感謝您的幫助。

+3

您是否閱讀過錯誤信息? 「輸入文件似乎是一個文本格式轉儲。請使用psql」 – leonbloy

+0

我沒看過錯誤信息。這是我使用選項-E SQL_ASCII的主要原因,因此它不會創建文本格式文件。 –

+1

'-E'設置字符編碼,它與格式無關。尋找'-F'。 http://www.postgresql.org/docs/9.3/interactive/app-pgdump.html無論如何,你通常喜歡做文本轉儲。 – leonbloy

回答

2

官方docs第一線有關恢復說:

pg_dump生成的文本文件,旨在通過 psql程序讀取。一般的命令形式恢復轉儲是

PSQL DBNAME < INFILE

這裏的infile是pg_dump的命令

或者只是讀取錯誤信息的輸出文件。

選項-E SQL_ASCII只設置字符編碼,它與轉儲格式無關。默認情況下,pg_dump生成一個包含SQL語句以重新生成數據庫的文本文件;在這種情況下,爲了恢復數據庫,您只需要在文件中執行sql命令,就像在psql終端中一樣 - 這就是爲什麼簡單的psql dbname < mydump是要走的路。

pg_restore將與pg_dump替代的「二進制」-postgresql特定格式一起使用。