如何仅在psql中关闭标头(PostgreSQL)


18

我正在使用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!

您在Unix上吗?如果是这样,你可以使用头/尾灯/ grep的/ AWK / SED /一百万的东西
Philᵀᴹ

Answers:


10

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关闭打印标题和行数。


7

我的解决方案不是完全关闭,而是丢弃标头。

您可以尝试tail查询输出:

\o | tail -n +2

使用\o,您可以将输出重定向到文件或管道,在这种情况下。该解决方案也有其缺陷:至少就我而言,执行后SELECT [...],除非按下键,否则我不会返回提示。提示后出现第一行输出。如果您随后将输出重定向到文件,则应该没有问题。

如果您PAGER适当地设置环境变量并且始终使用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)

psqlPostgreSQL 9.2随附的版本中,您可以使用该\setenv命令以方便使用(我的意思是您不必设置可能也会影响其他应用程序的env变量)。


不错的技巧,很高兴知道传呼机选项。但是实际上标题本身没有选择吗?也许我应该检查一下postgresql的邮递员-skong
2012年

@sinbadblue不,您已经检查了,不。但是,您可以发布功能请求:)将是一个有用的改进。
dezso 2012年

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.