120 votes

Équivalent de Postgres à \ G de MySQL?

Est-ce que quelqu'un sait si Postgres a une manière d'afficher les résultats des requêtes de façon "jolie", comme le fait MySQL en terminant une requête avec \G sur la ligne de commande? Par exemple, "select * from sometable\G" au lieu de "select * from sometable;"

Merci beaucoup!

136voto

Alexander Stolz Points 2950

Je ne suis pas assez familier avec MySQL pour savoir ce que fait l'option \G, mais d'après la documentation, l'option \x de psql pourrait faire ce que vous voulez.

C'est un basculeur, donc vous le faites avant de soumettre la requête.

\x
select * from sometable;

39voto

mage2k Points 479

En fait, vous pouvez activer la mise en forme de style mysql \G sur une base de requête dans psql en mettant ce qui suit dans ~/.psqlrc:

\set G '\\set QUIET 1\\x\\g\\x\\set QUIET 0'

Vous pouvez ensuite utiliser :G à la fin d'une requête dans le client psql de la même manière que vous utiliseriez \G à la fin d'une requête dans le client mysql:

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

1 votes

Ma prochaine question après \x était comment l'éteindre. Votre solution le résout avec grâce!

31voto

Daniel Vérité Points 2595

Depuis PostgreSQL 10, psql a \gx qui est l'équivalent exact de \G de mysql

select * from sometable \gx

Documentation:

\gx [ filename ]
\gx [ |command ]
\gx est équivalent à \g, mais force le mode de sortie étendu pour cette requête. Voir \x.

La séquence \x\g\x fait la même chose, mais seulement lorsque \x (=affichage étendu) est éteint. Sinon, cela fait l'inverse ! En revanche, \gx affiche toujours en mode étendu indépendamment du régime actuel de \x.

24voto

cmehmen Points 113

En empruntant à cette réponse:

Vous pouvez ajouter \x\g\x à la requête de la même manière que vous le feriez avec \G de MySQL. Par exemple:

select * from users \x\g\x

Remarquez l'absence de ; dans la ligne ci-dessus, cela est intentionnel.

Ceci a pour effet d'activer l'affichage étendu, d'exécuter la requête exprimée et de désactiver l'affichage étendu, le tout en une seule déclaration.

2voto

David Pashley Points 22851

Vous pouvez basculer psql en mode étendu avec \x avant d'exécuter une commande, mais vous ne pouvez pas le faire sur une base de commande par commande comme vous le pouvez dans mysql.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X