Thread SQL-DB-Dump lesen und konverieren
(18 answers)
Opened by topeg at 2014-03-14 02:28
Hi,
Dateien sind mit Perl generell einfach zu erzeugen. Letztendlich gehts darum, Datenstrukturen auf Byte-Ebene abzubilden ohne Informationsverlust. In DB-Feldern können sowohl NULL-Werte als auch Leerstrings vorkommen, dass muss nach einem Transport der Daten reproduzierbar sein, wie machst Du das in einer CSV? Dann hätten wir noch, bei einer textlichen Strukturierung, die Frage nach dem Feld-Trennzeichen zu klären, im einfachsten Fall wird dieses Zeichen in Nutzdatenfeldern maskiert. Aus Letzerem ergibt sich im Falle einer menschenlesbaren Darstellung wiederum eine Anforderung an den Editor, wobei die Entscheidung ob eines human readable format höchstens im zweistelligen Megabytebereich getroffen wird und bei Datenmengen, die an Gigabytes heranreichen völlig indiskutabel ist. Praktisch ist das die erste Entscheidung: Sollen Daten dargestellt oder transportiert werden? Du schreibst doch selbst, dass eine menschliche Lesbarkeit keine Rolle spielt, warum führst Du das jetzt als Argument für CSV? Dann wäre noch was: Textlich strukturierte Daten erfordern einen Parser und der kann erst dann arbeiten, wenn die Daten komplett im Hauptspeicher liegen. Es sei denn, die CSV kann zeilenweise abgearbeitet werden, woraus sich die nächste Frage ergibt, nämlich die, wie in Nutzdaten vorhandene Zeilenumbrüche nach CSV transformiert werden sollen. Freilich kann ein Datensatz in einer CSV auch auf mehrere Zeilen abgebildet sein, aber wozu überhaupt einen Zeilenumbruch als Trennzeichen für Datensätze? Nächste Frage: Datentypen in einer CSV-Datei.... Alles in Allem ist ein Transport über CSV o.a. mit textlich strukturierten Mitteln erzeugten Dateien alles Andere als einfach. Sequenzen erfordern auch keinen Parser, das Lesen einer Sequenz beginnt ummittelbar mit den ersten Bytes, das ist CPU und RAM-gefällig. Argumente wie Kompatibilität und Portierbarkeit sind ebenfalls nicht an CSV gebunden, das lässt sich auch mit proprietären Sequenzen lösen. Portierbarkeit: Unterschiedliche Plattformen reden Bytes. HTTP: Übertragen werden Bytes. FTP, Sockets... Bytesemantics. Nicht umsonst gibt es Schichtenmodelle. Schönes Wochenende! |