Postgresql
為什麼我的 pg_restore 命令不起作用?
昨天,我使用以下命令創建了各種 PostgreSQL 數據庫的備份:
pg_dump -Fc -d junk -h localhost -p 5434 -U postgres -W > z:\pg_dump\96_junk.dump
我為每個數據庫創建了一個單獨的備份。
今天,我正在嘗試使用以下命令將它們還原到升級的數據庫伺服器:
pg_restore -h localhost -p 5434 -U postgres -W -C -v z:\pg_dump\96_junk.dump
當我
pg_restore
使用上述執行時,似乎數據庫已恢復。控制台螢幕顯示了一系列 SQL 語句和我希望看到的有關此數據庫的其他消息,最後,“PostreSQL 數據庫轉儲完成”是顯示的輸出。當我檢查數據庫時,數據庫不存在。我究竟做錯了什麼?
使用版本資訊
- 使用9.6.0版創建的備份
- 嘗試使用版本9.6.1進行恢復
-d
嘗試使用or--dbname
參數指定要開始的數據庫的名稱。當我遇到同樣的問題時,這對我有用。請注意,它不必是目標數據庫:pg_restore -h localhost -p 5434 -U postgres -d postgres -W -C -v z:\pg_dump\96_junk.dump
就像 Jen RS 所說,使用“-d”選項時它會起作用。
不使用“-d”時在控制台中顯示的輸出是預期的行為;在文件中說:
pg_restore 可以在兩種模式下執行。如果指定了數據庫名稱,pg_restore 將連接到該數據庫並將歸檔內容直接恢復到數據庫中。**否則,將創建包含重建數據庫所需的 SQL 命令的腳本並將其寫入文件或標準輸出。**此腳本輸出等價於 pg_dump 的純文字輸出格式。
當沒有指定數據庫時,pg_restore 會生成所有命令,然後您可以將輸出重定向到一個文件,然後直接執行該文件。