psqlのインタラクティブ出力のページャーをオフにします


35

PostgreSQL 8.3から9.0に切り替えました。おそらくそれは新機能または単に設定の変更かもしれませんが、コマンドからの出力(など\d tablename)が目に見える垂直方向のスペースを超えると、psqlはに類似しlessたものを通して出力をパイプするように見えます。この動作をオフにする方法が見つかりませんでした。何かアドバイス?ありがとう。

PS私はPuTTYを使用してバッファをスクロールしているShift+PgUp/PgDnので、psqlのページングは​​必要ありません。さらに、qpsqlのページングを押すと、その出力は画面から完全に消えます(lessbashで実行した後のように)。これは一般的なユースケースの観点からは間違っています。


Googleからページャーをスクロールしようとしている場合は、SpacenやPgDn、下矢印などではありません。
ヌメノン

回答:


35

そのためのドキュメントがあります。

psqlマニュアルの\ psetセクションから:

ページャ

クエリおよびpsqlヘルプ出力のためのページャープログラムの使用を制御します。環境変数PAGERが設定されている場合、出力は指定されたプログラムにパイプされます。それ以外の場合、プラットフォーム依存のデフォルト(moreなど)が使用されます。

ページャーオプションがオフの場合、ページャープログラムは使用されません。ページャーオプションがオンの場合、ページャーは適切な場合、つまり、出力が端末であり、画面に収まらない場合に使用されます。pagerオプションは、alwaysに設定することもできます。これにより、ページャーは、画面に収まるかどうかに関係なく、すべての端末出力に使用されます。値のない\ psetページャーは、ページャーの使用のオンとオフを切り替えます。


9
ありがとうございました。完全なソリューションは次のようになりますpsql -P pager
ユーリ・ウシャコフ

3
〜/ .psqlrcファイルにオプションを入れて、毎回これを入力する必要がなくなると思います。
スヴェン

とにかくlessに引数を渡しますか?
-snapfractalpop

3
ユリの問題にも出くわしました。上記のように。\pset pagerpsqlを使用して、出力がページャーに送信されるかどうかを切り替えることができます。ただし、ページャーを使用して、終了時に出力が画面から消えないようにする必要があります。答えは、ポケットベルとして「少ない」ではなく「もっと」を使用することです。これを行うには、シェルでPAGER環境変数を設定するか、PAGER環境変数を〜/ .psqlrcファイルに追加します。
マイケルラッシュ14

4
@MichaelRush:に設定PAGERするless -Xと、画面はクリアされません。
スヴェン

21

スイッチャーを試してください:

database_name=# \pset pager
Pager is used for long output.
database_name=# \pset pager
Pager usage is off.

3
また\pset pager [on|off]、一定の結果のため。
ロレスク



0

psqlシェルで使用するときにページャーをオフにするには:

psql -P pager=off ...

空のPAGER環境変数をエクスポートすることもできるため、すべてのステートメントにオプションを追加する必要はありません。現在のシェルを閉じるまで設定されたままになります。

export PAGER=
psql ...

最後に、覚えやすいかもしれない回避策:出力をパイプ処理しcat、デフォルトのページャーを無効にします

psql ... | cat
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.