Postgresql
如何在 vm 上恢復 pg_dump 文件
pg_dump
我用using創建了一個轉儲,sudo -u postgres pg_dump dbname > dbexport.psql
我試圖恢復那個轉儲,
sudo -u postgres pg_restore -d dbname < dbexport.psql
我在還原時出錯
pg_restore:
$$ archiver $$輸入文件似乎是文本格式轉儲。請使用 psql。
之後我輸入以下內容
sudo -i -u postgres psqldbname < dbexport.psql
我什麼也沒看到,只是一條新線等待更多輸入。沒有錯誤消息,所有表仍然是空的。只是一個等待更多輸入的新行。有人可以告訴我我做錯了什麼嗎?
這裡的問題是您可能有一個底層文件系統問題。如果您通過使用 重定向 STDIN 將文件通過管道傳輸到 psql 中
< file
,您將無法確定有關流的內容(例如行號)。您還依靠 shell 來告訴您錯誤,而不是 psql。而是嘗試使用-f flag
psql myDatabase -f myDump
只是為了更多的上下文,試試這個:
cat < file_does_not_exist
你會看到這樣的東西,
$ cat < file_does_not_exist zsh: no such file or directory: file_does_not_exist
該錯誤來自zsh!而你的shell如果不是zsh,可能不會產生同樣的錯誤。它可能只是阻塞並等待文件被創建,或者訪問文件。
儘管有傳統觀點,但我懷疑這是一個螢幕截圖會有所幫助的情況。在我看來,您誤解瞭如何呼叫psql shell。
你的終端看起來像這樣嗎?
您的命令
sudo -i -u postgres psql
使您進入互動式psql
會話。TL;DR:您不再需要為所有內容psql
開頭。從外部(在您的預設 bash、zsh 或其他中),您可以使用
<
字元(在其他選項中,如[-f|--file]
或管道)將文件內容輸入到psql
.然而,在互動式會話中,使用
\i
(\include
) 元命令輸入文件。