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!
シェルから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
を使用して、ヘッダーと行数の印刷をオフにします。
私の解決策は、完全にオフにするのではなく、ヘッダーを破棄することです。
クエリ出力を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変数を設定する必要がないことを意味します)。
Psqlコマンドラインオプション-P "footer=off"
を追加する必要があります。このオプションは、列タイトルを結果に保持します。