2 Minuten Lesezeit (320 Worte)

Kurz und gut - Episode #13 Exportgeschäfte: Tabellen als CSV speichern!

Ich werde in Seminaren, Workshops oder in Kundenprojekten in Sachen MySQL immer mal wieder mit Dingen konfrontiert, auf die ich ad hoc keine Antwort habe bzw. mit denen ich noch keine Erfahrung gesammelt habe. 

Das Problem

Die heutige Frage eines/-r Teilnehmer:in war eigentlich kein echtes Problem: Wie kann ich überhaupt Tabellendaten in eine CSV-Datei exportieren?

Auf diese Frage gibt es viele Antworten:

  • Über ein Shell-Skript
  • „SELECT INTO OUTFILE“-Syntax [1]
  • Tools (z. B. MySQL Workbench)

Da mein Lieblingstool derzeit aber die MySQL Shell ist, habe ich zur Beantwortung dieser Frage eben dieses Werkzeug benutzt. Wie immer nutzen wir die MySQL Demodatenbank „sakila“ zur Veranschaulichung.

MySQL  localhost  sakila  SQL > show tables;
+----------------------------+
| Tables_in_sakila           |
+----------------------------+
| actor                      |
| actor_info                 |
…
 

Wir möchten in unserem Beispiel die Daten der Schauspieler (Tabelle: „actor“) in einer CSV-Datei ablegen. 

Die Lösung

Zur Lösung dieser Aufgabe nutzen wir das „Table Export Utility“ der MySQL Shell[2]. Die Nutzung beschränkt sich auf wenige Parameter und geht leicht von der Hand. Die ersten beiden Parameter definieren Quelle (Tabelle) und Ziel (Export-Datei). Der dritte Parameter kann optional genutzt werden, um spezielle Einstellungen vorzunehmen. Wir nutzen in unserem Beispiel exemplarisch einige dieser Einstellungen:

MySQL  localhost  sakila  JS > util.exportTable("sakila.actor", "/tmp/actor.csv", {"where": "actor_id > 50", "showProgress": "true", "fieldsEnclosedBy" :"\""})

Initializing - done
Gathering information - done
Running data dump using 1 thread.
NOTE: Progress information uses estimated values and may not be accurate.
Starting data dump
75% (150 rows / ~200 rows), 0.00 rows/s, 0.00 B/s
Dump duration: 00:00:00s
Total duration: 00:00:00s
Data size: 6.79 KB
Rows written: 150
Bytes written: 6.79 KB
Average throughput: 6.79 KB/s

The dump can be loaded using:
util.importTable("/tmp/actor.csv", {
    "characterSet": "utf8mb4",
    "fieldsEnclosedBy": "\"",
    "schema": "sakila",
    "table": "actor"
});
 

Fazit

Die MySQL-Shell bietet viele kleine (und große) nützliche Ergänzungen zum klassischen MySQL-Client. Auch das Exportieren (und wie am Ende der Ausgabe zu erkennen ist, das „Importieren“ von Daten) lässt sich mit der Shell unkompliziert umsetzten. 

Principal Consultant bei ORDIX

 

Kommentare

Derzeit gibt es keine Kommentare. Schreibe den ersten Kommentar!
Donnerstag, 25. April 2024

Sicherheitscode (Captcha)

×
Informiert bleiben!

Bei Updates im Blog, informieren wir per E-Mail.

Weitere Artikel in der Kategorie