有人知道 Postgres 是否有办法“漂亮地”显示查询结果,就像 MySQL 在命令行上以 \G 结束查询时所做的那样?例如,“select * from sometable\G”而不是“select * from sometable;”。
非常感谢!
答案1
我对 MySQL 不够熟悉,不知道 \G 选项的作用,但根据文档,psql \x 选项似乎可以实现你想要的功能。
但这是一个切换,因此您可以在提交查询之前执行此操作。
\x
select * from sometable;
答案2
事实上,你能通过在 ~/.psqlrc 中输入以下内容,在 psql 中根据每个查询启用 \G mysql 样式格式:
\set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0'
然后,您可以在 psql 客户端中查询的末尾使用 :G,就像在 mysql 客户端中查询的末尾使用 \G 一样:
pagila=# select * from foo limit 1;
id | uniq | val | val_ts
----+------+-----+---------------------
1 | 1 | 3 | 2007-07-03 00:00:00
(1 row)
Time: 11.481 ms
pagila=# select * from foo limit 1 :G
-[ RECORD 1 ]---------------
id | 1
uniq | 1
val | 3
val_ts | 2007-07-03 00:00:00
答案3
从 PostgreSQL 10 开始,psql
它\gx
与 mysql 的\G
select * from sometable \gx
文档:
\gx [ filename ]
\gx [ |command ]
\gx 相当于 \g,但会强制此查询使用扩展输出模式。请参阅 \x。
该序列\x\g\x
执行相同的操作,但仅当\x
(=扩展显示) 关闭时才执行。否则,它会执行相反的操作!相比之下,\gx
始终使用扩展输出进行显示,而不受当前状态的影响\x
。
答案4
您可以在运行命令之前使用 \x 将 psql 切换到扩展模式,但不能像在 mysql 中那样逐个命令地执行此操作。