Cookies für Statistik und Werbung
Wir setzen Cookies für Statistik und Werbung ein, beides geht an Google. Wenn du ablehnst, ändert sich für dich sichtbar nichts.Zur Datenschutzseite
CSV
Eine Tabelle als Klartext. Jede Tabellenkalkulation, jede Datenbank und jedes Auswertungswerkzeug liest sie.
CSV
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
| Endung | .csv |
|---|---|
| Medientyp | text/csv |
| Erstmals veröffentlicht | 1972 |
| Spezifikation | RFC 4180 |