2009-11-25 45 views
25

我試圖通過執行pg_dump創建的SQL,在空數據庫上恢復PostgreSQL數據庫。PostgreSQL:數據庫從轉儲恢復 - 語法錯誤

我得到這個錯誤:

ERROR: syntax error at or near "\" 
LINE 5211: \. 

線5210和5211讀:

COPY auth_group (id, name) FROM stdin; 
\. 

它工作正常,我的Linux服務器,我用這個命令上:

PSQL -U dbname < dumpfile.sql

但在Windows上,我不確定如何做同樣的事情,所以我一直試圖從pgAdminIII查詢實用程序運行dumpfile的sql。

從Windows上的轉儲中導入數據庫的推薦方式是什麼?或者:如何解決語法問題?

任何幫助非常感謝!

馬丁

回答

68

psql-f filename參數將讀取文件中的,所以你不必管它。PSQL應包含在Windows PostgreSQL的bin目錄。像這樣:

psql -d dbname -U username -f dumpfile.sql 

您可能需要包括完整路徑PSQL可執行文件,如果不是你的路徑上,並可能加「.exe」給psql,故有‘psql.exe’。

此外,請確保您的版本號不會下降,我之前遇到過語法問題(例如,不導出8.4數據庫並嘗試將其加載到8.1數據庫中)。如果是這樣,您可能需要手動編輯轉儲文件。

+1

試圖導入轉儲的Navicat是被扔各種各樣的語法錯誤時,這爲我工作。它從OS X的終端工作得很好。 – 2012-01-04 17:59:28

27

嘗試用psql -d DBNAME -U用戶-f dumpfile.sql

+0

謝謝凱,我會給你一個最起碼的投票。 – Hoff 2009-11-25 16:52:51