Schraube

MySQL Ausgabe mit vielen Spalten formatieren

Es passiert mir schon einmal öfters, dass ich in der Konsole eine SQL-Query absetze, die mehrere Spalten beinhaltet. Dabei sorgt die hohe Menge an Spalten in der Ausgabe für einen Zeilenumbruch der Standardformatierung von MySQL und die generierten Tabellenansichten sind nicht mehr übersichtlich. Solange das Fenster sich breit genug ziehen lässt ist dies grunsätzlich nicht problematisch. Jedoch bringt diese Formatierung einen schnell an die Grenzen, weil schon allein die Dateninhalte einer einzigen Spalte mal länger als eine Zeile sein können. Und spätestens dann wird es richtig ekelig zu erkennen welche Eintrag in welcher Spalte einer Zeile wo zu verorten ist.

Die Lösung ist einfacher als man glaubt, denn schon mit den Standardboardmitteln der MySQL Konsole lässt sich die Ausgabe der Spalten formatieren. Ein Resultset welches die für die aktuelle Ansicht einfach zu breit in der Ausgabe ist sieht exemplarisch wie folgt aus:

mysql> select now() as date_1, now() as date_2, now() as date_3, now() as date_4, now() as date_5, now() as date_6, now() as date_7, now() as date_8, now() as date_9 union all select now() as date_1, now() as date_2, now() as date_3, now() as date_4, now() as date_5, now() as date_6, now() as date_7, now() as date_8, now() as date_9;

+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
| date_1              | date_2              | date_3              | date_4              | date_5              | date_6              | date_7              | date_8              | date_9              |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
| 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 |
| 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 | 2018-09-15 08:53:45 |
+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+---------------------+
2 rows in set (0.00 sec)

Das Ergebnis sieht ziemlich kryptisch aus – oder?

Um diese Ausgabe übersichtlicher darzustellen gibt es die Option \G. Diese Option wird der vorhandenen Query einfach angehangen. Sodann wird die Ausgabe der Query jede Zeile des Resultsets in einem separaten Block darstellen. Jede Spalte Pro Block wird in einer eigenen Zeile inklusive einem Spaltenlabel ausgegeben.

Für das obige Beispiel sieht das Ergebnis in der Konsole dann wie folgt aus:

mysql> select now() as date_1, now() as date_2, now() as date_3, now() as date_4, now() as date_5, now() as date_6, now() as date_7, now() as date_8, now() as date_9 union all select now() as date_1, now() as date_2, now() as date_3, now() as date_4, now() as date_5, now() as date_6, now() as date_7, now() as date_8, now() as date_9 \G;

*************************** 1. row ***************************
date_1: 2018-09-15 08:54:15
date_2: 2018-09-15 08:54:15
date_3: 2018-09-15 08:54:15
date_4: 2018-09-15 08:54:15
date_5: 2018-09-15 08:54:15
date_6: 2018-09-15 08:54:15
date_7: 2018-09-15 08:54:15
date_8: 2018-09-15 08:54:15
date_9: 2018-09-15 08:54:15
*************************** 2. row ***************************
date_1: 2018-09-15 08:54:15
date_2: 2018-09-15 08:54:15
date_3: 2018-09-15 08:54:15
date_4: 2018-09-15 08:54:15
date_5: 2018-09-15 08:54:15
date_6: 2018-09-15 08:54:15
date_7: 2018-09-15 08:54:15
date_8: 2018-09-15 08:54:15
date_9: 2018-09-15 08:54:15
2 rows in set (0.00 sec)

Damit wird es möglich ziemlich einfach visuell zu erfassen welche Datenausgabe zu welcher Spalte gehört.

Veröffentlicht von

Sebastian

Als erfahrener Softwarentwickler entwickelt Sebastian in einer Softwareschmiede in Bonn Individualsoftware mit den Schwerpunkten in PHP und MySQL. Er hat eine pfiffige Frau sowie drei quirlige Söhne, fährt gerne Auto und liebt handwerkliche Arbeiten die im häuslichen Umfeld so anfallen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend.

Ich akzeptiere