J'utilise PuTTY pour exécuter:
mysql> SELECT * FROM sometable;
sometable
a de nombreux champs et cela se traduit par de nombreuses colonnes essayant d'être affichées dans le terminal. Les champs passent à la ligne suivante, il est donc très difficile d'aligner les titres des colonnes avec les valeurs des champs.
Quelles sont les solutions pour visualiser ces données dans le terminal?
Je n'ai pas ni ne veux accéder à phpMyAdmin - ou à toute autre interface graphique. Je recherche des solutions en ligne de commande comme celle-ci: Enregistrer les résultats de la requête MySQL dans un fichier texte ou CVS
mysql
command-line
select
putty
Chris Jacob
la source
la source
Réponses:
Terminez la requête avec
\G
à la place de;
. Par exemple:Cette requête affiche les lignes verticalement, comme ceci:
la source
G
doit être capitalisé.SELECT * FROM sometable\G
vous envoyez la chaîne au client de ligne de commande mysql, pas à Windows, c'est pourquoi leG
est sensible à la cassesh: 1: less: not found 44 rows in set (0.01 sec)
Vous pourriez également trouver cela utile (non-Windows uniquement):
Cela dirigera la sortie à travers l'
less
outil de ligne de commande qui - avec ces paramètres - vous donnera une sortie tabulaire qui peut être défilée horizontalement et verticalement avec les touches de curseur.Quittez cette vue en appuyant sur la
q
touche, ce qui fermera l'less
outil.la source
/
puis en écrivant la chaîne de recherche, qui peut également être des expressions rationnelles, puis en appuyant sur Entrée. Recherchez en avant en appuyant surn
et en arrière en appuyant surN
(Shift + n
).less
peut faire des choses encore plus cool. En utilisant,&
vous pouvez filtrer (afficher uniquement les lignes correspondantes) le résultat en utilisant des expressions régulières. Cela fonctionne en plus de la/
recherche (qui provoquera toujours la mise en évidence). Réinitialisez le filtre en appuyant de&
nouveau, puis en appuyant simplement sur Retour.Essayez d'activer le mode vertical, en utilisant
\G
pour exécuter la requête au lieu de;
:Vos résultats seront répertoriés en mode vertical, de sorte que chaque valeur de colonne sera imprimée sur une ligne distincte. La sortie sera plus étroite mais évidemment beaucoup plus longue.
la source
\G
, vous pouvez également utiliser\g
pour remplacer;
, je sais, qui ferait cela, mais cela donne un contexte pour expliquer pourquoi\G
travailler en premier lieu.Utilisation de
mysql
laego
commandeDe
mysql
lahelp
commande de:Ainsi, en ajoutant un
\G
à votreselect
, vous pouvez obtenir une sortie verticale très nette:Utiliser un téléavertisseur
Vous pouvez dire à MySQL d'utiliser le
less
pager avec son-S
option qui coupe les lignes larges et vous donne une sortie que vous pouvez faire défiler avec les touches fléchées:Ainsi, la prochaine fois que vous exécuterez une commande avec une sortie large, MySQL vous permettra de parcourir la sortie avec le
less
pager:Si vous avez terminé avec le pager et que vous souhaitez revenir à la sortie régulière
stdout
, utilisez ceci:la source
Vous pouvez utiliser l' option
--table
ou-t
, qui produira un bel ensemble de résultatsou une autre méthode pour passer une requête à mysql, comme:
production:
la source
Le pager par défaut est stdout. La sortie standard a la limitation de colonne, de sorte que la sortie serait encapsulée. Vous pouvez définir d'autres outils comme pager pour formater la sortie. Il existe deux méthodes. L'une consiste à limiter la colonne, l'autre à la traiter dans vim.
La première méthode:
La sortie n'est pas terminée. Le contenu s'adapte à votre écran.
Le deuxième:
Réglez le mode vim pour qu'il s'enclenche maintenant dans votre .vimrc
la source
pager cut -c -200
. Les réponses les plus acceptées ici m'ont obligé à télécharger des dépendances inutiles.Juste pour compléter la réponse que je pensais le mieux, j'utilise également,
less -SFX
mais d'une manière différente: j'aime l'.my.cnf
ajouter à mon fichier dans mon dossier d'accueil, un exemple de fichier cnf ressemble à ceci:L'avantage de l'avoir de cette façon, c'est qu'il
less
n'est utilisé que lorsque la sortie d'une requête fait en fait plus d'une page, voici l'explication de tous les indicateurs:Remarque: dans le
.my.cnf
fichier, ne placez pas lapager
commande sous le[client]
mot - clé; même si cela pourraitmysql
bien fonctionner,mysqldump
se plaindra de ne pas le reconnaître.la source
less
elle restera ancrée à la première ligne de la sortie.Si vous utilisez MySQL de manière interactive, vous pouvez configurer votre pager pour qu'il utilise
sed
comme ceci:Si vous ne l'utilisez pas
sed
comme pager, la sortie est la suivante:la source
J'ai écrit
pspg
- https://github.com/okbob/pspgCe pager est conçu pour les données tabulaires - et MySQL est également pris en charge.
la source
Je crois que le mastic a un nombre maximum de colonnes que vous pouvez spécifier pour la fenêtre.
Pour Windows, j'utilise personnellement Windows PowerShell et définit une largeur de tampon d'écran raisonnablement élevée. La largeur de colonne reste fixe et vous pouvez utiliser une barre de défilement horizontale pour voir les données. J'ai eu le même problème que vous rencontrez maintenant.
modifier: Pour les hôtes distants que vous devez connecter à SSH, vous utiliseriez quelque chose comme plink + Windows PowerShell
la source
Vous pouvez utiliser
tee
pour écrire le résultat de votre requête dans un fichier:la source
À l'aide de l'invite de commandes Windows, vous pouvez augmenter la taille de la mémoire tampon de la fenêtre autant que vous le souhaitez pour voir le nombre de colonnes. Cela dépend du nombre de colonnes dans le tableau.
la source