Postgres 相当于 MySQL 的 \G?

Postgres 相当于 MySQL 的 \G?

有人知道 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 中那样逐个命令地执行此操作。

相关内容