web-dev-qa-db-fra.com

Outil de ligne de commande MySQL Linux et résultats correctement formatés

Est-ce que quelqu'un connaît un bon outil à utiliser avec le shell pour interroger la base de données et obtenir des résultats intelligibles ?

Sur la ligne de commande, à partir de SSH, je souhaite interroger la base de données à l'aide de mysql, mais les résultats sont plutôt illisibles car il n'y a pas de formatage pour l'écran du terminal.

Si je lance ce qui suit, il est difficile de donner un sens aux résultats.

use mydb;
select * from db3_settings;

Je sais que je pourrais utiliser phpMyAdmin ou MySQLCC mais je recherche une solution en ligne de commande.

19
Peter Bushnell

Vous pouvez obtenir une sortie au format vertical avec \G.

Voici la sortie standard:

mysql> select * from tblSettings;
+-----------+----------------+---------------------+
| settingid | settingname    | settingvalue        |
+-----------+----------------+---------------------+
|         1 | maxttl         | 30                  |
|         2 | traceroutepath | /usr/bin/traceroute |
|         3 | alertemail     | [email protected]         |
+-----------+----------------+---------------------+
3 rows in set (0.00 sec)

Et voici à quoi ressemble la sortie avec \G:

mysql> select * from tblSettings \G;
*************************** 1. row ***************************
   settingid: 1
 settingname: maxttl
settingvalue: 30
*************************** 2. row ***************************
   settingid: 2
 settingname: traceroutepath
settingvalue: /usr/bin/traceroute
*************************** 3. row ***************************
   settingid: 3
 settingname: alertemail
settingvalue: [email protected]
3 rows in set (0.00 sec)
34
jwbensley

Vous pouvez rendre les résultats plus lisibles de plusieurs manières.

Utiliser limit pour ne voir que quelques lignes:

SELECT * FROM table LIMIT 10;

Ne renvoyer que certaines colonnes:

SELECT a,b,c FROM table;

Terminez vos requêtes avec \Gpour envoyer l'instruction actuelle au serveur à exécuter et afficher le résultat au format vertical:

SELECT * FROM table \G
6
ModulusJoe

Pour les systèmes autres que Windows, vous pouvez utiliser less pour rendre la sortie formatée ou plus lisible. 

mysql > pager less -SFX;
mysql > select * from databasename.table;

il dirige la sortie sql vers less en donnant une sortie tabulaire qui peut être défilée horizontalement et verticalement avec les touches du curseur. quitter en appuyant sur 'q'

si vous ne voulez pas, réinitialisez en utilisant

mysql> nopager
1
computingfreak

En ligne de commande, vous pouvez afficher les résultats des enregistrements renvoyés sous forme d'enregistrements individuels formatés (par opposition à une table longue) en utilisant \G à la fin de votre requête, comme suit:

select * from <tablename> \G;
1
karthik339

Utilisation de la commande mysql's ego

De la commande mysql's help:

ego (\ G) Envoie la commande au serveur mysql, affiche le résultat verticalement.

Donc, en ajoutant un \G à votre select, vous pouvez obtenir une sortie verticale très propre:

mysql> SELECT * FROM db3_settings \G;

Utiliser un pager

Vous pouvez demander à MySQL d'utiliser le paginateur less avec son option -S qui coupe les lignes larges et vous donne une sortie que vous pouvez faire défiler à l'aide des touches fléchées:

mysql> pager less -S

Ainsi, la prochaine fois que vous exécuterez une commande avec une sortie large, MySQL vous permettra de parcourir la sortie avec le pagin less:

mysql> SELECT * FROM db3_settings;

Si vous en avez terminé avec le pageur et que vous souhaitez revenir à la sortie normale sur stdout, utilisez ceci:

mysql> nopager
0
Ronan Boiteau