2012-06-24 10 views
89

を無効にします。PostgreSQLは、私は私のPostgreSQLサーバ上でスクリプトを実行している複数の出力

psql db -f sql.sql 

bashからかcronスクリプトで。

moreまたはlessと出力を改ページしようとします。

psqlの結果ページングを無効にするにはどうすればよいですか?

私がしたいことは、データを変更することです。出力は気にしません。この出力はどこかにリダイレクトする必要があるため、Linuxは特定の/dev/nullを介して到達可能なノードのすべてを破棄 'が、stdoutとstderrを:

答えて

3
psql db -f sql.sql > /dev/null 
6

bashは、shellされ、2 streamsは、あなたがその出力データをリダイレクトすることができます。あなたがそこに送るものはすべて、空に消えてしまいます。

(シェルは、入力ストリームを持っていますが、出力を抑制するために尋ねたので、私はここにこれを無視します)

これらのストリームは、数字で表されます:stderrのために標準出力のための1および2。

あなたは(基本的にはデータがに流れる場所であるために指している)だけでは、<>事業者とそれを行うだろう標準出力リダイレクトしたいのであれば

は、私たちが標準出力を抑制したいと(/にリダイレクトDEV /ヌル):

psql db -f sql.sql > /dev/null

あなたはこれがデフォルトですstdoutです見ることができるように、何もストリーム数が を使用していないあなたはストリーム番号を使用したい場合は、

を記述します。今、あなたはSTDERRORを抑制したい場合

psql db -f sql.sql 1> /dev/null

(ストリーム番号2)あなたはまた、別のストリームをリダイレクトすることができ

psql db -f sql.sql 2> /dev/null

、あなたはstdoutに例のSTDERROR、のために、使用したいですすべての出力をどこかに、定期的に、そしてエラーに保存したい場合に便利です。

psql db -f sql.sql 2>&1 > log.txt

あなたは2>&1

の間にスペースがないことができ、心は最後に、時には最も興味深いあなたはそれが完全に静かな "たいときのために、&>を使用して、すべての出力を抑制することができるという事実である

psql db -f sql.sql &> /dev/null

+1

psqlが送信しないため、この情報は基本的には健全ですが、この特定のケースでは全く機能しません有益なメッセージをstderrに送信します。それらはstdoutのデータと混在しています。 –

+0

突然、最終的な '&>'の大文字小文字は、すべての出力を抑制することによって、ページャを停止するためにOPによって使用できるということがわかります。あなたが答えをどうにかして修正するなら、私はダウンボートを削除します。 –

153

ページ付けを無効にしてもに出力を保持するために、

\pset pager off 

この設定を覚えておくには、~/.psqlrcに追加してください。

the psql manualを参照してください。完全にクエリ出力を抑制するために、それだけでトグルだったのPG古いバージョンで

、そう\pset pager

、あなたのpsqlスクリプトで\o /dev/nullを使用しています。

psqlの情報出力を抑制するには、-qで実行するか、QUIET=1を環境内に設定します。結果を生成し、それらを捨てる


あなたが/dev/nullstdoutをリダイレクトすることができます

psql db -f sql.sql >/dev/null 

あなたはとstdoutとstderrの両方をリダイレクトすることができます

psql db -f sql.sql >&/dev/null 

が、私にはありませんそれが正しいとは言えないことを警告するかもしれないエラー情報を捨てるので、それをお勧めします。あなたはまた結果を出して投げ捨てるのですが、それは非効率です。あなたはあなたの質問を調整することで最初にそれらを生成しない方が良いでしょう。

+0

これは、ページャの使用を中止しますが、出力を停止しません。私は 'PAGER ="/dev/null "psql db -P pager = always -f sql.sql'が必要になると思っています。 –

+2

いいえ、\ o/dev/nullを使用してください。 –

67

私もこれを探していた、私はServerFaultの上similar questionに方法を見つけた:

psql -P pager=off <other params> 

は出力を抑制することなく、ページングの事をオフにします。

+1

この回答は、マニュアルページの-Pに関するものよりも役に立ちました。ありがとう! – nortally

+0

それは私が正確に必要なものです。ありがとう:) –

1

別のオプションがあります。 psqlオプション名などを覚えておく必要がないという利点があります。

psql ... | cat 
+0

絶対protip! +1 – sjas

関連する問題