it-swarm.cn

Postgres等同于MySQL的\ G?

有谁知道Postgres是否可以“简洁地”显示查询结果,就像MySQL在命令行上用\ G结束查询时的方式一样?例如,“从某表\ G中选择*”,而不是“从某表中选择*”;

非常感谢!

87
law

我对MySQL不太了解,无法知道\ G选项的作用,但是根据文档,它看起来像psql\x选项可能可以满足您的要求。

但是,这是一个切换,因此请在提交查询之前执行此操作。

\x
select * from sometable;
100
Adam Ruth

实际上,您can通过在〜/ .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
34
mage2k

这个答案 借来的:

您可以附加\x\g\x进行查询,就像使用MySQL的\G。例如:

select * from users \x\g\x

注意缺少;在上面的行中,这是故意的。

这具有启用扩展显示,运行所表达的查询以及禁用扩展显示的全部效果。

19
Eben Geer

自PostgreSQL 10起,psql具有\gx,与mysql的\G完全等效

select * from sometable \gx

文档

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

序列\x\g\x的功能相同,但仅当\x(=扩展显示)关闭时。否则,情况恰恰相反!相反,\gx始终以扩展的输出显示,而与\x的当前状态无关。

9
Daniel Vérité

您可以在运行命令之前使用\ x将psql切换为扩展模式,但不能像在mysql中那样逐个命令地将psql转换为扩展模式。

3
David Pashley