Equivalence de mode `psql` pour` mysql`


4

Suis frustré par des choses comme:

0:33:1407402356:root@ahost:~# echo 'use wordpress_3_6_1; select * from wp_posts;'
 | mysql -u mysqluser -pmysqlpasswdord | wc -l -L
42   40585

Résultats de la requête SQL étant mutilés moche.

PostgreSQL ™ psqlfournit le mode étendu de la fonction d’aide . Voyez-le en action:

postgres@ahost:~$ echo '\c openerp7-0 \\ select * from pg_shadow' | psql
You are now connected to database "openerp7-0" as user "postgres".
 usename  | usesysid | usecreatedb | usesuper | usecatupd | userepl |          
   passwd                | valuntil | useconfig 
----------+----------+-------------+----------+-----------+---------+----------
-------------------------+----------+-----------
 openerp |    16384 | t           | t        | t         | t       | 
ahash |          | 
 postgres |       10 | t           | t        | t         | t       | 
anotherhash |          | 
(2 rows)

postgres@ahost:~$ echo '\c openerp7-0 \\ \x \\ select * from pg_shadow' |
psql                
You are now connected to database "openerp7-0" as user "postgres".
Expanded display is on.
-[ RECORD 1 ]------------------------------------
usename     | openerp
usesysid    | 16384
usecreatedb | t
usesuper    | t
usecatupd   | t
userepl     | t
passwd      | ahash
valuntil    | 
useconfig   | 
-[ RECORD 2 ]------------------------------------
usename     | postgres
usesysid    | 10
usecreatedb | t
usesuper    | t
usecatupd   | t
userepl     | t
passwd      | anotherhash
valuntil    | 
useconfig   |

Ce mode développé est mignon pour les tables à plusieurs colonnes:

postgres@ahost:~$ echo '\c openerp7-0 \\ \x \\ select * from res_partner' |
psql | wc -l -L
223   44423
postgres@ahost:~$ echo '\c openerp7-0 \\ select * from res_partner' | psql |
wc -l -L
  9   94030

Bien sûr, ce n’est que lorsque cela ne vous dérange pas que les gens changent le nombre de lignes wc -l.

Comment les gens peuvent-ils accomplir mysqlune fonctionnalité similaire au mode étendu présenté dans psql?


sqlplus
J'ai

Réponses:


7

Si je comprends bien ce que vous voulez réaliser, vous pouvez l'essayer avec le séparateur \ G (au lieu du point-virgule), comme ceci:

echo 'SELECT * FROM mytable\G' | mysql -u myuser -p mypassword mydb

Exemple de sortie:

*************************** 1. row ***************************
    id: 1
locale: de
  name: Afghanistan
*************************** 2. row ***************************
    id: 2
locale: de
  name: Ägypten

Agréable. En éliminant la différence d'alignement horizontal évidente et évidemment évidente, cela me convient dans la plupart des cas.
178024

1
Donc, man mysqlils l'appellent le format vertical . Mais il s’agit d’une commande ego qui fait la même chose que go mais affiche les résultats en utilisant le format vertical. Peut - être que e dans l' ego signifie dilatée . Je suppose que la terminologie provient de SGBDR à sources fermées, notamment Oracle.
178024
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.