Eine CSV-Datei ist ungefähr so einfach, wie ein Datenformat sein kann. Reiner Text, eine Zeile je Datensatz, Werte durch Kommas getrennt:
name,quantity,priceWidget,12,4.50
Das ist die ganze Idee, und deshalb hat CSV jedes proprietäre Format überlebt, das sie ersetzen wollte. Jedes Programm liest sie, sie ist winzig, sie öffnet in jedem Texteditor, und Sie sehen genau, was drinsteht.
Sie ist zugleich das Format, das Ihre Daten am ehesten beschädigt, ohne es zu sagen — und die Gründe sollte man kennen, bevor man die nächste öffnet.
Das erwischt ständig Leute, und es ist ein Sprachproblem, kein Softwarefehler.
Im Deutschen, Französischen, Spanischen, Portugiesischen und vielen weiteren Regionen ist das Komma das Dezimaltrennzeichen — 4,50 ist viereinhalb. Dann kann das Komma nicht auch Felder trennen, also schreiben und erwarten Tabellenprogramme dort Semikolons:
name;quantity;priceWidget;12;4,50
Beide Dateien heißen CSV. Öffnen Sie die Semikolon-Fassung in einem Programm, das Kommas erwartet, fällt jede Zeile in eine einzige Spalte zusammen. Umgekehrt dasselbe.
In der Datei steht nirgends, welche es ist. Die einzig verlässliche Lösung ist Importieren statt Doppelklick, damit Sie das Trennzeichen selbst angeben.
Was, wenn ein Wert ein Komma enthält? Er wird in doppelte Anführungszeichen gesetzt:
"Smith, John",12,4.50
Enthält ein Wert ein Anführungszeichen, wird es verdoppelt. Ein Feld darf sogar einen Zeilenumbruch enthalten, solange es in Anführungszeichen steht — weshalb Sie Datensätze nicht durch Zählen der Zeilen ermitteln können.
Jedes ordentliche CSV-Werkzeug beherrscht das. Handgebaute Dateien — alles, was durch Aneinanderhängen von Zeichenketten mit Kommas entsteht — meist nicht, und der Bruch zeigt sich genau dann, wenn jemandes Name oder Adresse ein Komma enthält.
Eine CSV-Datei enthält keine Angabe ihrer Zeichenkodierung. Anders als HTML oder XML gibt es keinen Ort, an dem „das ist UTF-8″ stünde. Das öffnende Programm muss raten.
Excel unter Windows rät traditionell die lokale Codepage statt UTF-8. Eine CSV mit chinesischem, japanischem oder koreanischem Text — oder mit Umlauten und Akzenten — öffnet dann als unlesbare Zeichen, obwohl die Datei völlig korrekt ist.
Das ist der Teil, der echte Arbeit kostet, weil er lautlos passiert, bevor Sie irgendetwas getan haben.
Eine CSV hat keine Typen — jeder Wert ist Text. Das Tabellenprogramm rät, was jeder bedeutet, und es irrt selbstbewusst auf immer dieselben Weisen:
01234 wird 1234. Telefon-, Konto-, Artikel- und Ausweisnummern trifft dasselbe.1.23457E+15, und die Originalziffern sind weg, nicht verborgen.3-10 wird zum 3. Oktober. Das ist das berühmte Problem, das Genetiker zwang, Gene umzubenennen, deren Symbole fortlaufend in Daten verwandelt wurden.Der entscheidende Punkt: Speichern Sie danach, wird der Schaden zurückgeschrieben. Die Originalwerte lassen sich aus der gespeicherten Kopie nicht wiederherstellen.
Zwei Gewohnheiten verhindern alles davon. Behalten Sie von jeder empfangenen CSV eine unberührte Kopie. Und wenn der Inhalt Codes, Kennungen oder irgendetwas mit führenden Nullen enthält, nehmen Sie den Importweg und markieren Sie diese Spalten als Text, bevor die Daten landen.
Und was sie nicht kann: mehrere Blätter, Formeln, Formatierung, Zelltypen, verbundene Zellen, Diagramme oder irgendetwas Verschachteltes. Dafür gibt es die Tabellenformate daneben.