Postgres 相当于 MySQL 的 \G?

law*_*law 101 mysql postgresql

有谁知道 Postgres 是否有一种方法可以“漂亮地”显示查询结果,就像 MySQL 在命令行上用 \G 结束查询时所做的那样?例如,“select * from sometable\G”而不是“select * from sometable;”

非常感谢!

小智 116

我对 MySQL 不够熟悉,无法知道 \G 选项的作用,但根据文档,它看起来 psql \x 选项可能会做你想要的。

不过,这是一个切换,因此您可以在提交查询之前进行切换。

\x
select * from sometable;
Run Code Online (Sandbox Code Playgroud)


小智 34

实际上,您可以通过将以下内容放入 ~/.psqlrc 中,在 psql 中基于每个查询启用 \G mysql 样式格式:

\set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0'
Run Code Online (Sandbox Code Playgroud)

然后,您可以在 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
Run Code Online (Sandbox Code Playgroud)


小智 21

借用这个答案

您可以\x\g\x像使用 MySQL 的\G. 例如:

select * from users \x\g\x
Run Code Online (Sandbox Code Playgroud)

注意;上面一行中的缺失,这是故意的。

这具有在一个语句中启用扩展显示、运行表达查询和禁用扩展显示的效果。


Dan*_*ité 15

从 PostgreSQL 10 开始,psqlhas\gx完全等同于 mysql 的\G

select * from sometable \gx
Run Code Online (Sandbox Code Playgroud)

文件

\gx [ 文件名 ]
\gx [ |command ]
\gx 等效于 \g,但强制此查询的扩展输出模式。见\x。

序列\x\g\x执行相同的操作,但仅当\x(=expanded display) 关闭时。否则会适得其反!相比之下,\gx始终以独立于当前状态的扩展输出显示\x