web-dev-qa-db-ja.com

psqlでのみヘッダーをオフにする方法(postgresql)

PostgreSQL 9.1.Xを使用しています

ヘッダーなしでフッターを含む結果を出力するpsqlスクリプトを作成しようとしています。

http://www.postgresql.org/docs/9.1/static/app-psql.html

上記のドキュメントから

\pset tuples_only

ヘッダーとフッターの両方をオフにします。そして

\pset footer off

フッターのみをオフにします。

psqlにヘッダーをオフにしてフッターをオンに保つ方法はありますか?

Shell/Perl /好きなテキストツールを使用してこの問題を回避する方法はたくさんあることは知っていますが、フッターには構成があるのにヘッダーには構成がないのはなぜですか?

id <--this line I don't want
---- <-- this line I don't want either
 1  <-- this line, yes
(1 row) <-- yes, I want it!
20
skong

シェルからpsqlを実行する場合、-t(タプルのみを出力する)オプションを使用できます。

$ psql -t -c "SELECT version();"
 PostgreSQL 9.5.5 on x86_64-pc-linux-gnu, compiled by gcc (Debian 4.9.2-10) 4.9.2, 64-bit

psql内で\tを使用して、ヘッダーと行数の印刷をオフにします。

14
Tombart

私の解決策は、完全にオフにするのではなく、ヘッダーを破棄することです。

クエリ出力をtailしようとすることができます:

\o | tail -n +2

\oを使用すると、この場合のように、出力をファイルまたはパイプにリダイレクトできます。このソリューションにも欠点があります。少なくとも私の場合、SELECT [...]の実行後、キーを押さない限りプロンプトに戻りません。また、最初の出力行はプロンプトの後に表示されます。その後、出力をファイルにリダイレクトすれば、問題にはなりません。

この動作は、PAGER環境変数を適切に設定し、常にポケットベルを使用する場合は回避できますpsql

$ export PAGER='tail -n +3'

$ psql -U postgres -d test
psql (9.1.4, server 9.1.5)

test=# \pset pager always
Pager is always used.

test=# select * from a;
  2 | b
  3 | b
(2 rows)

PostgreSQL 9.2に付属するpsqlバージョンでは、便宜上\setenvコマンドを使用できます(つまり、他のアプリケーションに影響を与える可能性があるenv変数を設定する必要がないことを意味します)。

8
dezso

Psqlコマンドラインオプション-P "footer=off"を追加する必要があります。このオプションは、列タイトルを結果に保持します。

5
Karen Muñoz