2012-07-14 80 views
22

psql有一個-q/--quiet選項(環境變量QUIET)。 pg_restore沒有安靜的選項。有什麼辦法可以使pg_restore不會詳細地顯示它正在執行的SQL命令嗎?是否有像「psql --quiet」這樣的「pg_restore --quiet」選項?

# e.g., here's the verbose output that I don't want to see: 
$ pg_restore --cluster 8.4/mycluster mycluster.dump 
---- PostgreSQL database dump 
-- 
SET statement_timeout = 0;SET client_encoding = 'UTF8'; 
SET standard_conforming_strings = off;SET check_function_bodies = false; 
... 
-- 
-- Name: data_src; Type: TABLE; Schema: public; Owner: postgres; Tablespace:-- 
CREATE TABLE data_src (
... 
+0

爲什麼不簡單地將輸出重定向到'/ dev/nul'? – 2012-07-14 16:41:40

+0

我不想將輸出重定向到/ dev/null,因爲我不想丟失任何潛在的錯誤消息。他們可能會去stderr,所以我可以將stdout重定向到/ dev/null,但我喜歡像 - quiet更好的想法。我不介意看到一些信息輸出,但不是每一個sql命令。 – 2012-07-14 20:16:51

回答

41

的問題似乎暗示pg_restore正在執行這些SQL命令,你不會希望看到他們在輸出中。但是輸出它們只是它應該做的。

pg_restore有兩種操作模式,有或沒有連接到數據庫。當它被稱爲沒有數據庫(-d選項),如圖所示的問題:

$ --cluster pg_restore的8.4/myCluster中mycluster.dump

那麼它的唯一目的是爲了輸出一組SQL的命令以純文本形式提供給SQL解釋器以恢復數據庫。這些SQL命令構成一個沒有任何冗長概念的連貫集合,它們本身不是,而是pg_restore本身。它們通常被重定向到一個文件以供稍後執行,或者通過管道傳輸到psql以立即執行。

+4

啊哈,現在都清楚了!我錯誤地認爲沒有-d,pg_restore會自動爲我創建數據庫。但是,通過您的解釋和閱讀pg_restore(1)手冊頁,現在已經很清楚了。我的問題是一個錯誤的假設,所以我會考慮如何對它進行重新說明,以使未來的讀者更清楚。謝謝@Daniel_Vérité! – 2012-07-15 16:38:19