Thread Datenbanktabellen exportieren - Dateiformat (14 answers)
Opened by Kuerbis at 2024-05-31 16:13

Raubtier
 2024-06-01 16:44
#196347 #196347
User since
2012-05-04
1075 Artikel
BenutzerIn
[default_avatar]
2024-05-31T14:13:24 Kuerbis
Hallo,

gibt es beim Export von Daten aus Datenbanken Situationen, in denen JSON als Dateiformat besser geeignet ist als CSV?


Ja:
a) wenn es sich bei der Datenbank um eine Dokumentendatenbank handelt
b) wenn die Datenbank viele json-Felder enthält

CSV ist zwar klein und effizient, aber leider nicht fest definiert. Lass 10 Personen einen CSV-Dump einer DB anfertigen und du bekommst 10 verschiedene Versionen ;-) Fängt beim Trennzeichen an (Komma wie im "c" von csv oder doch Semikolon oder Tab?), geht über das Datumsformat weiter, es stellt sich die Frage, wie man das Trennzeichen in Strings escapet, ob Zeilenumbrüche in Daten korrekt behandelt werden, in welcher Kodierung die Strings vorliegen (pro-Tipp für mehr Verwirrung: eine Spalte in UTF-8, eine in Windows-1252 und eine in cp850 liefern) wie man NULL darstellt und ob man NULL immer von einem leeren String unterscheiden kann --- und wie sind eigentlich die Datentypen der Spalten?

So und theoretisch sind das alles lösbare Probleme, aber in der Praxis waren fast alle größeren CSV-Dateien, die ich bekommen habe, kaputt, obwohl wir genau diese Dinge immer wieder angesprochen hatten. Meistens ist es sowas wie "Ja, aber dass in unseren Datensätzen ein Zeilenumbruch vorkommt, das sollte nicht sein". Oder Kunde sagt, "wir haben doch nicht mit Komma exportiert, sondern mit "|" als Trennzeichen, damit gibt es keine Probleme. Natürlich sind dann doch irgendwo "|" in den Daten drin etc. Ich habe bei anderen Formaten dieses Problem noch nie gehabt, bei CSV allerdings sehr massiv.

Andererseits habe ich auch schon mal eine Tabelle aufgebläht auf mehrere 100 GB in JSON bekommen, wo der Indent (je Zeile 8 Spaces) und die für jetzt Zeile die immer wiederholten Spaltennamen locker >90% der Gesamtdatenmenge ausgemacht haben. Das ist dann das Negativbeispiel für json - bzw. für json im Format [{"spalte1": wert1, ...}, {nächste Zeile}, ...] Hätte man das json hier andersrum exprtiert: {"spalte1": [wert1, wert2, ...], "spalte2": [...], ...} wäre das deutlich effizienter gewesen.

Also: kommt immer auf die Datenmenge und die Art der Daten und der Datenbank an.
Last edited: 2024-06-01 16:47:48 +0200 (CEST)

View full thread Datenbanktabellen exportieren - Dateiformat