CSV

Was ist eine CSV-Datei?

Eine Tabelle als Klartext. Jede Tabellenkalkulation, jede Datenbank und jedes Auswertungswerkzeug liest sie.

Was CSV ist

CSV ist ein reines Textformat, das sich in jedem Editor öffnen lässt. Eingesetzt wird es für den Austausch zwischen Programmen.

Die Endung lautet .csv, der volle Name Comma-Separated Values. Beides sagt weniger aus als das, was die Datei halten kann — und davon handelt der Rest dieser Seite.

Woher CSV kommt

Es geht auf 1972 zurück. Die Spezifikation ist RFC 4180.

Einem Format, das so lange lesbar geblieben ist, kann man etwas anvertrauen, das man in zehn Jahren wiederhaben will.

Die Spezifikation ist öffentlich

Sie ist vollständig veröffentlicht, das Format lässt sich also aus dem Dokument umsetzen statt durch Nachsehen. Deshalb taucht es in so vielen Programmen auf, und deshalb gehen Dateien von vor zwanzig Jahren heute noch auf. Veröffentlicht heißt allerdings nicht lizenzfrei: Wo ein Format einen Codec einpackt, ist die Patentfrage eine eigene, die der Standard nicht mitbeantwortet.

Es wird nichts weggeworfen

CSV speichert seinen Inhalt exakt. Erneutes Speichern ändert nichts, es lässt sich also beliebig oft öffnen, bearbeiten und wieder ablegen, ohne dass sich Schaden ansammelt — genau das macht es zu einem Arbeitsformat und nicht zu einem Ausgabeformat.

Für eine Notiz ist kein Platz

CSV hat keine Kommentarsyntax. Alles Erklärende muss außerhalb der Datei leben — gut zu wissen, bevor man sie für etwas wählt, das ein Mensch von Hand pflegt.

Was CSV öffnet

Microsoft Excel, LibreOffice Calc und pandas lesen es, und die meisten Programme derselben Art ebenfalls.

Wenn eine Datei nicht aufgeht, liegt es selten am Format — häufiger daran, dass das Programm älter ist als das Format. Die Umwandlung in etwas Älteres ist der verlässliche Weg daran vorbei, und dafür gibt es den Rest dieser Website.

Im Browser öffnen

Kein Browser liest es.

Das ist der häufigste Grund, es umzuwandeln: nicht dass das Format schlecht wäre, sondern dass die Stelle, an der die Datei erscheinen soll, es nicht lesen kann.

Es ist ein Arbeitsformat

CSV ist zum Öffnen und Ändern gedacht. Behalte die Datei in diesem Format, solange die Arbeit läuft, und exportiere daraus, wann immer eine fertige Fassung gebraucht wird.

Was damit schiefgeht

Die wiederkehrenden Klagen: Spaltentypen werden beim Einlesen geraten statt angegeben.

Nichts davon ist ein Grund, das Format zu meiden. Es sind die Dinge, die man kennen sollte, bevor eines davon einen überrascht — das ist eine andere und eine nützlichere Behauptung.

Das einfachste Format, das keins ist

Eine CSV-Datei ist Zeilen aus Werten, getrennt durch ein Zeichen — so weit stimmt die Beschreibung, bis der erste Wert selbst dieses Zeichen enthält. Dann braucht es Anführungszeichen, und Werte in Anführungszeichen brauchen wiederum eine Möglichkeit, ein Anführungszeichen zu enthalten, und Werte brauchen eine Möglichkeit für einen Zeilenumbruch — und an jeder dieser Stellen gehen die Umsetzungen der verschiedenen Programme auseinander.

RFC 4180 hat 2005 versucht, die übliche Praxis niederzuschreiben, und sagt ausdrücklich, dass es bestehende Gepflogenheiten beschreibt statt einen verbindlichen Standard zu setzen. Zwanzig Jahre später hält sich noch immer nicht jede Software daran. Das ist der ehrliche Ausgangspunkt: CSV ist eine Familie fast kompatibler Formate unter einer gemeinsamen Endung.

In Deutschland ist das Trennzeichen fast nie ein Komma

Deutsches Excel exportiert CSV-Dateien standardmäßig mit Semikolon, nicht mit Komma — und das liegt nicht an einer Vorliebe, sondern am Dezimaltrennzeichen. Wo „1,50 Euro" mit Komma als Nachkommastelle geschrieben wird, kann das Komma nicht gleichzeitig Spalten trennen, ohne jede Zahl in zwei Felder zu zerlegen. Die Dateiendung bleibt trotzdem .csv, was regelmäßig zu falschen Annahmen führt, sobald die Datei ins Ausland oder in ein englischsprachiges Werkzeug geht.

Öffnet sich eine CSV-Datei als eine einzige, vollgestopfte Spalte, ist fast immer genau das die Ursache: Ein Programm hat ein Komma erwartet und ein Semikolon bekommen, oder umgekehrt. Die Datei ist dabei völlig in Ordnung — nur die Annahme über das Trennzeichen war falsch, und praktisch jeder Import-Dialog lässt sich umstellen.

Anführungszeichen sind die Stelle, an der Dateien wirklich brechen

Ein Wert mit Trennzeichen, Anführungszeichen oder Zeilenumbruch muss in doppelte Anführungszeichen gefasst werden, und ein Anführungszeichen innerhalb eines solchen Werts wird verdoppelt geschrieben. Macht man das richtig, kann ein Feld alles enthalten, sogar einen ganzen Absatz mit Zeilenumbrüchen.

Macht man es falsch, ist der Schaden lautlos. Ein nicht maskiertes Anführungszeichen lässt einen Parser den Rest der Datei in ein einziges Feld schlucken. Ein Semikolon in einer unmaskierten Adresse verschiebt jede folgende Spalte dieser Zeile um eins — eine Datei mit zehntausend Zeilen kann bis auf die elf, in denen eine Firma mit Semikolon im Namen vorkommt, völlig korrekt sein, ohne dass irgendetwas eine Fehlermeldung ausgibt.

Alles ist Text, bis etwas anderes entscheidet

Eine CSV-Datei kennt keine Typen. Die Zeichen 0 0 1 2 3 stehen in der Datei, und ob daraus die Zahl 123 oder der Text „00123" wird, entscheidet allein das lesende Programm.

Das ist der Grund für die ganze Familie von Klagen über verschwundene Daten: führende Nullen bei Postleitzahlen, Artikelnummern, die zu Datumsangaben werden, lange Kennnummern, die ihre letzten Stellen an eine Gleitkommazahl verlieren. Nichts davon steht in der Datei — es passiert erst beim Öffnen, und die Absicherung ist, zu importieren statt zu öffnen und die heiklen Spalten dabei ausdrücklich als Text zu deklarieren.

Zeichenkodierung und die unsichtbaren drei Bytes

Eine CSV-Datei trägt keine Angabe zu ihrer Zeichenkodierung. UTF-8 ist der vernünftige Standard und wird heute von fast allem geschrieben; Excel auf Windows hat lange stattdessen eine regionale Codepage angenommen, weshalb ein Export mit Umlauten dort gerne als Kauderwelsch erscheint.

Die übliche Abhilfe ist, eine Byte Order Mark voranzustellen — drei unsichtbare Bytes, die Excel mitteilen, dass UTF-8 vorliegt. Das funktioniert, erzeugt aber ein anderes Problem: Viele andere Parser lesen diese Bytes dann als Teil der ersten Spaltenüberschrift, sodass ein Abgleich mit „id" lautlos scheitert. Eine Lösung, die beides gleichzeitig erfüllt, gibt es nicht — eine faire Zusammenfassung des Formats insgesamt.

Worin CSV wirklich gut ist

Im Streamen. Eine Datei, die größer ist als der Arbeitsspeicher, lässt sich Zeile für Zeile lesen, ohne dass ein Werkzeug je mehr als eine Zeile im Speicher halten muss — deshalb sprechen Datenpipelines, Datenbankimporte und Kommandozeilenwerkzeuge alle diese Sprache, und ein Export von fünf Gigabyte bleibt handhabbar.

Und in der Durchschaubarkeit. Es ist reiner Text, also kann sich nichts darin verstecken — keine Makros, keine externen Verknüpfungen, keine Formeln, die auf andere Dateien zugreifen. Genau deshalb verlangen sicherheitsbewusste Systeme CSV statt einer Arbeitsmappe, und das ist eine echte Eigenschaft, kein Trostpreis.

Eine Datei schreiben, die andere lesen können

Fünf Gewohnheiten verhindern fast jedes Problem. UTF-8 ohne Byte Order Mark verwenden. Jedes Feld maskieren, das das Trennzeichen, ein Anführungszeichen oder einen Zeilenumbruch enthalten könnte — oder gleich alles maskieren, was zulässig und billig ist. Eine Kopfzeile mit kurzen, eindeutigen Namen setzen. Datumsangaben im ISO-Format schreiben, Jahr zuerst, weil das korrekt sortiert und weder als deutsches noch als amerikanisches Datum missverstanden werden kann. Und angeben, welches Trennzeichen verwendet wurde, falls es kein Komma ist.

Nichts davon wird von irgendetwas erzwungen, weshalb es sich lohnt, bewusst darauf zu achten. Eine CSV-Datei, die diese fünf Regeln befolgt, öffnet sich korrekt in jedem Werkzeug, das sie je erhält.

Die Eckdaten auf einen Blick

Kennungen und Herkunft des Formats CSV.
Endung.csv
Medientyptext/csv
Erstmals veröffentlicht1972
SpezifikationRFC 4180