Postgres equivalent to MySQL's \G?
Solution 1:
I'm not familiar enough with MySQL to know what the \G option does, but based on the documentation it looks like the psql \x option might do what you want.
It's a toggle, though, so you do it before you submit the query.
\x
select * from sometable;
Solution 2:
Actually, you can enable \G mysql style formatting on a per-query basis in psql by putting the following in ~/.psqlrc:
\set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0'
You can then use :G at the end of a query in the psql client the same as you would \G at the end of a query in the mysql client:
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
Solution 3:
Borrowing from this answer:
You can append \x\g\x
to the query just as you would with MySQL's \G
. For example:
select * from users \x\g\x
Note the lack of ;
in the above line, this is intentional.
This has the effect of enabling expanded display, running the expressed query, and disabling expanded display, all in one statement.
Solution 4:
Since PostgreSQL 10, psql
has \gx
which is the exact equivalent of mysql's \G
select * from sometable \gx
Documentation:
\gx [ filename ]
\gx [ |command ]
\gx is equivalent to \g, but forces expanded output mode for this query. See \x.
The sequence \x\g\x
does the same, but only when \x
(=expanded display) is off. Otherwise it does the opposite! By contrast \gx
always displays with the expanded output independently of the current regime of \x
.
Solution 5:
You can toggle psql into extended mode with \x before you run a command, but you can't do it on a command by command basis like you can in mysql.