Ich verwende PuTTY , um Folgendes auszuführen:
mysql> SELECT * FROM sometable;
sometable
hat viele Felder und dies führt dazu, dass viele Spalten versuchen, im Terminal angezeigt zu werden. Die Felder werden in die nächste Zeile umgebrochen, sodass es sehr schwierig ist, Spaltentitel mit Feldwerten auszurichten.
Welche Lösungen gibt es, um solche Daten im Terminal anzuzeigen?
Ich habe und möchte keinen Zugriff auf phpMyAdmin - oder andere GUI-Schnittstellen. Ich suche nach Befehlszeilenlösungen wie dieser: Speichern Sie die Ergebnisse der MySQL-Abfrage in Text- oder CVS-Dateien
mysql
command-line
select
putty
Chris Jacob
quelle
quelle
Antworten:
Beenden Sie die Abfrage mit
\G
anstelle von;
. Zum Beispiel:Diese Abfrage zeigt die Zeilen vertikal wie folgt an:
quelle
G
muss dies aktiviert werden.SELECT * FROM sometable\G
senden Sie bei der Eingabe die Zeichenfolge an den MySQL-Befehlszeilenclient und nicht an Windows. Aus diesem GrundG
wird zwischen Groß- und Kleinschreibung unterschiedensh: 1: less: not found 44 rows in set (0.01 sec)
Möglicherweise finden Sie dies auch nützlich (nur unter Windows):
Dadurch wird das Ergebnis durch das
less
Befehlszeilen-Tool geleitet, das mit diesen Parametern eine tabellarische Ausgabe liefert, die mit den Cursortasten horizontal und vertikal gescrollt werden kann.Verlassen Sie diese Ansicht, indem Sie die
q
Taste drücken, wodurch dasless
Tool beendet wird.quelle
/
und Schreiben der Suchzeichenfolge, die auch Regexe sein kann, und Drücken der Eingabetaste. Suchen Sie vorwärts durch Drücken vonn
und rückwärts durch Drücken vonN
(Shift + n
).less
kann noch mehr coole Dinge tun. Mit können&
Sie das Ergebnis mithilfe regulärer Ausdrücke weiter filtern (nur übereinstimmende Linien anzeigen). Dies funktioniert zusätzlich zur/
Suche (die weiterhin die Hervorhebung verursacht). Setzen Sie den Filter zurück, indem Sie&
erneut drücken und dann einfach die Eingabetaste drücken.Versuchen Sie, den vertikalen Modus zu aktivieren, indem Sie
\G
die Abfrage ausführen, anstatt;
:Ihre Ergebnisse werden im vertikalen Modus aufgelistet, sodass jeder Spaltenwert in einer separaten Zeile gedruckt wird. Die Ausgabe wird schmaler, aber offensichtlich viel länger.
quelle
\G
können Sie , wie ich weiß, auch\g
als Ersatz dafür dienen;
, wer das tun würde, aber es gibt einen Kontext dafür, warum\G
überhaupt gearbeitet wurde.Mit
mysql
demego
Befehl vonVon
mysql
'shelp
Befehl:Wenn Sie also ein
\G
an Ihr anhängenselect
, erhalten Sie eine sehr saubere vertikale Ausgabe:Verwenden eines Pagers
Sie können MySQL anweisen, den
less
Pager mit seiner-S
Option zu verwenden, die breite Linien schneidet und Ihnen eine Ausgabe gibt, die Sie mit den Pfeiltasten scrollen können:Wenn Sie also das nächste Mal einen Befehl mit einer breiten Ausgabe ausführen, können Sie mit MySQL die Ausgabe mit dem
less
Pager durchsuchen :Wenn Sie mit dem Pager fertig sind und zur regulären Ausgabe zurückkehren möchten
stdout
, verwenden Sie Folgendes:quelle
Sie können die Option
--table
oder verwenden-t
, die eine gut aussehende Reihe von Ergebnissen ausgibtoder eine andere Methode, um eine Abfrage an MySQL zu übergeben, wie:
Ausgabe:
quelle
Der Standard-Pager ist stdout. Das stdout hat die Spaltenbeschränkung, sodass die Ausgabe umbrochen wird. Sie können andere Tools als Pager festlegen, um die Ausgabe zu formatieren. Es gibt zwei Methoden. Eine besteht darin, die Spalte zu begrenzen, die andere darin, sie in vim zu verarbeiten.
Die erste Methode:
Die Ausgabe ist nicht vollständig. Der Inhalt passt zu Ihrem Bildschirm.
Der zweite:
Stellen Sie den vim-Modus so ein, dass er jetzt in Ihrer .vimrc-Datei angezeigt wird
quelle
pager cut -c -200
. Für die hier akzeptierten Antworten musste ich unnötige Abhängigkeiten herunterladen.Um die Antwort zu ergänzen, die ich für am besten hielt, verwende ich sie auch,
less -SFX
aber auf eine andere Art und Weise: Ich möchte sie meiner.my.cnf
Datei in meinem Home-Ordner hinzufügen. Eine Beispiel-CNF-Datei sieht folgendermaßen aus:Das Gute daran ist, dass
less
es nur verwendet wird, wenn die Ausgabe einer Abfrage tatsächlich mehr als eine Seite lang ist. Hier ist die Erklärung aller Flags:Hinweis:
.my.cnf
Setzen Sie denpager
Befehl in der Datei nicht unter das[client]
Schlüsselwort. Obwohl es gut funktionieren könntemysql
,mysqldump
wird sich darüber beschweren, dass es nicht erkannt wird.quelle
less
es in der ersten Zeile der Ausgabe verankert bleibt.Wenn Sie MySQL interaktiv verwenden, können Sie Ihren Pager
sed
wie folgt einstellen :Wenn Sie nicht
sed
als Pager verwenden, sieht die Ausgabe folgendermaßen aus:quelle
Ich schrieb
pspg
- https://github.com/okbob/pspgDieser Pager wurde für tabellarische Daten entwickelt - und MySQL wird ebenfalls unterstützt.
quelle
Ich glaube, Kitt hat eine maximale Anzahl von Spalten, die Sie für das Fenster angeben können.
Für Windows verwende ich persönlich Windows PowerShell und stelle die Bildschirmpufferbreite einigermaßen hoch ein. Die Spaltenbreite bleibt fest und Sie können eine horizontale Bildlaufleiste verwenden, um die Daten anzuzeigen. Ich hatte das gleiche Problem, das Sie jetzt haben.
Bearbeiten: Für Remote-Hosts, in die Sie SSH einbinden müssen, verwenden Sie beispielsweise plink + Windows PowerShell
quelle
Sie können
tee
das Ergebnis Ihrer Abfrage in eine Datei schreiben:quelle
Mit der Windows-Eingabeaufforderung können Sie die Puffergröße des Fensters so weit erhöhen, wie Sie die Anzahl der Spalten anzeigen möchten. Dies hängt von der Anzahl der Spalten in der Tabelle ab.
quelle