„CSV (Dateiformat)“ – Versionsunterschied
[ungesichtete Version] | [gesichtete Version] |
Keine Bearbeitungszusammenfassung |
Pemu (Diskussion | Beiträge) |
||
(322 dazwischenliegende Versionen von mehr als 100 Benutzern, die nicht angezeigt werden) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Dateiformat |
|||
'''CSV-Datei''', ''Character Separated Values'', also durch ein bestimmtes Zeichen getrennte Werte, oft auch (nicht ganz korrekt) als ''Comma Separated Values'' aufgelöst, weil als Trennzeichen sehr häufig das Komma verwendet wird, bezeichnet eine tabellarisch strukturierte [[ASCII]]-Text-[[Datei]] ([[Tabelle]] einer [[Datenbank]]), deren Elemente (Felder) durch ein bestimmtes [[Trennzeichen]] getrennt werden. (''[[Texttabelle]]'') |
|||
| Name = CSV |
|||
| Icon = [[Datei:CsvDelimited001.svg]] |
|||
| Logo = |
|||
| Screenshot = |
|||
| Beschreibung = |
|||
| Dateiendung = .csv |
|||
| MIME = text/csv |
|||
| MIME-Anm = |
|||
| MagischeZahl = |
|||
| MagischeZahlNotation = |
|||
| MagischeZahlHex = |
|||
| Entwickler = |
|||
| Veröffentlicht = |
|||
| LetzteVersion = |
|||
| LetzteVersionDatum = |
|||
| Art = |
|||
| Container für = |
|||
| Enthalten in = |
|||
| Erweitert von = |
|||
| Erweitert zu = |
|||
| Standard = |
|||
| Website = |
|||
}} |
|||
Das [[Dateiformat]] '''CSV''' steht für {{enS|Comma-separated values}} (seltener ''Character-separated values''<ref>Dirk Louis, Peter Müller: ''Das Java 6 Codebook''. Pearson Education, 2007, ISBN 978-3-8273-2465-8, S. 259: „Die häufigste Variation ist der Austausch des Kommas durch ein anderes Trennzeichen, weswegen CSV oft auch als Akronym für Character Separated Values verstanden wird“</ref>) und beschreibt den Aufbau einer [[Textdatei]] zur Speicherung oder zum Austausch einfach strukturierter [[Daten]]. Die [[Dateinamenserweiterung]] lautet ''.csv''. |
|||
Das Trennzeichen darf nicht in Datenelementen vorkommen, oder es muss durch ein [[Maskierungszeichen]] als normales Zeichen gekennzeichnet werden. |
|||
Das Trennzeichen muss nicht das [[Komma]] sein, auch [[Semikolon]], [[Doppelpunkt]], [[Tabulator]] und andere Zeichen sind üblich. |
|||
Ein allgemeiner Standard für das Dateiformat CSV existiert nicht, jedoch wird es im <nowiki>RFC 4180</nowiki><ref name="RFC4180" /> grundlegend beschrieben; es existiert auch der neuere Standard <nowiki>RFC 7111</nowiki>.<ref>{{RFC-Internet |Autor=Michael Hausenblas, Erik Wilde, Jeni Tennison |RFC=7111 |Titel=URI Fragment Identifiers for the text/csv Media Type |Datum=2014-01}}</ref> Die zu verwendende [[Zeichenkodierung]] ist ebenso wenig festgelegt; 7-Bit-[[American Standard Code for Information Interchange|ASCII]]-Code gilt weithin als der kleinste gemeinsame Nenner. |
|||
Einzelne [[Datensatz|Datensätze]] werden[[Link-Text]][[Link-Text]][[Link-Text]][[Link-Text]][[Link-Text]][[Link-Text]][[Link-Text]][[Link-Text]][[Link-Text]] in der Regel durch einen [[Zeilenumbruch]] (bei ''Windows:'' ''CR LF = carriage return, line feed'' - ASCII 13 und 10; bei ''Unix:'' nur ''LF'' - ASCII 10; bei ''MacOS:'' nur ''CR'' - ASCII 13) getrennt. In der ersten Zeile stehen oft die [[Feldname]]n. |
|||
In CSV-Dateien können [[Tabelle]]n oder eine Liste unterschiedlich langer Listen abgebildet werden. |
|||
'''Beispiel: Inhalt einer CSV-Datei (hier mit Semikolon als Trennzeichen)''' |
|||
Stunde;Montag;Dienstag;Mittwoch;Donnerstag;Freitag |
|||
1;Mathe;Deutsch;Englisch;Mathe;Kunst |
|||
2;Sport;Französisch;Geschichte;Sport;Geschichte |
|||
3;Sport;Religion ev?;kath;Kunst;Deutsch;Kunst |
|||
Kompliziertere, beispielsweise geschachtelte Datenstrukturen können durch zusätzliche Regeln oder in verketteten CSV-Dateien gespeichert werden. Um sie in einer Datei abzuspeichern, eignen sich jedoch andere Formate wie [[JavaScript Object Notation|JSON]], [[Extensible Markup Language|XML]] oder [[EDIFACT]] besser. |
|||
In diesem Beispiel wird das [[Fragezeichen]] als Maskierungszeichen verwendet, um das Semikolon zwischen ''ev'' und ''kath'' in der letzten Zeile als Text zu kennzeichnen. Das 3. Element dieser Zeile würde nach einem Import also ''Religion ev;kath'' lauten. |
|||
== Dateiaufbau == |
|||
Beim [[Import]] einer solchen Texttabelle in eine [[Tabellenkalkulation]] o.ä. muss immer angegeben werden, ob die erste Zeile die Feldnamen enthält (hier: ja), welches das Feldtrennzeichen ist (hier: Semikolon), und wie die Datensätze untereinander getrennt sind (hier: CR LF). |
|||
Innerhalb der Textdatei haben einige Zeichen eine Sonderfunktion zur Strukturierung der Daten. |
|||
* Ein Zeichen wird zur '''Trennung von [[Datensatz|Datensätzen]]''' benutzt. Dies ist in der Regel der [[Zeilenumbruch]] des dateierzeugenden [[Betriebssystem]]s – bei dem Betriebssystem Windows sind es in der Praxis oft tatsächlich [[CRLF|zwei Zeichen]]. |
|||
Anderes Beispiel: |
|||
* Ein Zeichen wird zur '''Trennung von [[Datenfeld]]ern (Spalten)''' innerhalb der Datensätze benutzt. Allgemein wird dafür das [[Komma]] eingesetzt. Abhängig von beteiligter Software und Benutzereinstellungen sind auch [[Semikolon]], [[Doppelpunkt]], [[Tabulatorzeichen]], [[Leerzeichen]] oder andere Zeichen üblich. |
|||
* Häufig wird zusätzlich ein '''Feldbegrenzerzeichen''' (auch: '''Textbegrenzungszeichen''') – normalerweise das [[Anführungszeichen]] <code>"</code> – benutzt, das die Daten umschließt, wenn es selbst oder die anderen beiden in dieser Liste genannten Zeichen in den Felddaten vorkommen. Wenn der Feldbegrenzer in den Daten enthalten ist, wird er zudem bei der Ausgabe verdoppelt (siehe [[Maskierungszeichen]]). |
|||
Der erste Datensatz kann ein Kopfdatensatz sein, der die Spaltennamen definiert. |
|||
ID|Kundennummer|Name|Vorname|Anrede |
|||
1|123|Mustermann|Karl|Herr |
|||
2|453|Mustermann|Sabine|Frau |
|||
3|651|Mustersen|Jens|Pater |
|||
Jeder Datensatz sollte laut <nowiki>RFC 4180</nowiki>,<ref name="RFC4180" /> Absatz 2, Punkt 4 die gleiche Anzahl Spalten enthalten – dies wird aber nicht immer eingehalten. |
|||
CSV-Dateien tragen auch oft die Dateiendung '''.txt''', statt '''.csv''' und können auch in jedem [[Texteditor]] erstellt und bearbeitet werden. |
|||
Wird für die Trennung der Datenfelder das [[Tabulatorzeichen]] verwendet, wird das Dateiformat auch als TSV ({{enS|Tab-separated values}}) bezeichnet. Es hat den Vorteil, dass Tabulatorzeichen in der Regel nicht in den Nutzdaten vorkommen. Kommen auch keine Zeilenumbrüche darin vor, erübrigt sich die Verwendung eines Feldbegrenzers. TSV kommt oft beim Austausch von Daten zwischen Tabellenkalkulations- und sonstigen Programmen über die Zwischenablage zum Einsatz. |
|||
Das CSV-[[Dateiformat]] wird oft benutzt um [[Daten]] zwischen unterschiedlichen [[Computerprogramm]]en auszutauschen (es ist also ein [[Austauschformat]]). Die Verwendung des [[Dateiformat|Format]]es in der von [[Microsoft Excel]] verwendeten Form hat sich als Pseudo[[standard]] etabliert. Für neuere Anwendungen wird [[XML]] verwendet. |
|||
== Formatierung der Datenfelder == |
|||
''siehe auch:'' [[ASCII]] |
|||
Die Formatierung der Daten selbst ist nicht festgelegt. Das bedeutet, dass die verwendeten Formate zwischen den beteiligten Benutzern abgesprochen werden müssen. |
|||
Besonders davon betroffen sind: |
|||
* Datums- und Zeitangaben |
|||
** Die Reihenfolge der Einzelangaben (Jahr, Monat, Tag, Stunde, Minute, Sekunde, …) kann nicht immer eindeutig erkannt werden. |
|||
** Erschwerend kommt dazu, dass insbesondere bei Datumsangaben national unterschiedliche Trennzeichen genutzt werden. |
|||
** Die kleinste Hürde in diesem Fall ist, dass die Zahlenwerte mit und ohne führende Null vorkommen. |
|||
Beispiele: |
|||
Ist ''04/03/02'' der 4. März 2002, der 3. April 2002, der 2. März 2004 oder ein ganz anderer Wert? |
|||
Entspricht ''8:09'' „morgens neun Minuten nach acht“, „20 Uhr 09“ oder ist es eine „Dauer von 8 Minuten und 9 Sekunden“? |
|||
* Texte |
|||
** Im Gegensatz zu XML sieht CSV keinen Vermerk des benutzten Zeichensatzes innerhalb der Datei vor. Die verwendete Zeichencodierung sollte zwischen allen Beteiligten im Vorfeld festgelegt werden. |
|||
* Zahlenwerte |
|||
** Nach der ursprünglichen Vorgabe für das CSV-Datenformat können Zahlenfelder mit fester Mindestbreite verwendet werden. Dann werden Zahlenwerte mit führenden Nullen ergänzt, um die Mindestbreite zu erhalten. |
|||
** In verschiedenen Ländern haben sich unterschiedliche Dezimal- und Tausendertrennzeichen etabliert. Über Ländergrenzen hinweg können diese Zeichen sogar gegensätzlich benutzt werden. |
|||
** Manchmal wird kein Tausendertrennzeichen eingesetzt. |
|||
** Die Formatfülle von Währungsangaben ist unüberschaubar. |
|||
* Leerfeld |
|||
** Der Feldinhalt <code>""</code> wird manchmal als leerer Inhalt und manchmal als einzelnes Anführungszeichen interpretiert. |
|||
== Software == |
|||
[[fr:Comma separated values]] |
|||
* CSV-Dateien können mit jedem [[Texteditor]] oder mit einem speziellen Programm bearbeitet werden. |
|||
[[pl:CSV]] |
|||
* [[Tabellenkalkulation]]sprogramme und [[Datenbanksystem]]e wie z. B. [[Oracle]] oder [[MySQL]] können CSV-Dateien üblicherweise einlesen und auch exportieren, wobei Einstellungen wie Codierung, Trennzeichen, etwaige Textbegrenzungszeichen und Spaltenüberschriften in der Regel nicht vorgenommen werden können. |
|||
* Mit [[PHP]] kann eine CSV-Datei mit der Funktion „fgetcsv“ eingelesen werden.<ref>[https://www.php.net/manual/de/function.fgetcsv.php fgetcsv.] PHP-Handbuch.</ref> |
|||
* „tarql“ stellt ein [[SPARQL]]-Interface zur Verfügung. |
|||
* Um zwei CSV-Dateien miteinander zu vergleichen, kann „csvdiff“ verwendet werden. |
|||
* Batch-Werkzeugkästen zur Bearbeitung sind „csvkit“, „csvfix“ und Miller, welches sich an üblichen Unix-Kommandos (cat, tac, tail, sort, uniq etc.) orientiert. |
|||
== Anwendungen == |
|||
* Das CSV-[[Dateiformat]] wird oft benutzt, um [[Daten]] zwischen unterschiedlichen [[Computerprogramm]]en auszutauschen, beispielsweise [[Datenbank]]tabellen. |
|||
* Die Passwortdatei <code>/etc/passwd</code> der [[Unix]]-Benutzerverwaltung ist eine CSV-Datei mit dem [[Doppelpunkt]] als Trennzeichen. |
|||
== Beispiel == |
|||
Der folgende Quelltext einer CSV-Datei, mit dem Komma (<code>,</code>) als Feldtrennzeichen und Zeilenumbruch (CR LF) als Datensatz-Trennzeichen sowie mit Spaltenüberschriften in der ersten Zeile: |
|||
<pre> |
|||
Stunde,Montag,Dienstag,Mittwoch,Donnerstag,Freitag |
|||
1,Mathematik,Deutsch,Englisch,Erdkunde,Politik |
|||
2,Sport,Deutsch,Englisch,Sport,Geschichte |
|||
3,Sport,"Religion (ev., kath.)",Kunst,,Kunst |
|||
</pre> |
|||
repräsentiert die folgende Tabelle: |
|||
{| class="wikitable" |
|||
|- |
|||
| Stunde |
|||
| Montag |
|||
| Dienstag |
|||
| Mittwoch |
|||
| Donnerstag |
|||
| Freitag |
|||
|- |
|||
| 1 |
|||
| Mathematik |
|||
| Deutsch |
|||
| Englisch |
|||
| Erdkunde |
|||
| Politik |
|||
|- |
|||
| 2 |
|||
| Sport |
|||
| Deutsch |
|||
| Englisch |
|||
| Sport |
|||
| Geschichte |
|||
|- |
|||
| 3 |
|||
| Sport |
|||
| Religion (ev., kath.) |
|||
| Kunst |
|||
| |
|||
| Kunst |
|||
|} |
|||
In diesem Beispiel werden die Anführungszeichen verwendet, um das Komma zwischen ''ev.'' und ''kath.'' in der letzten Zeile als Text zu kennzeichnen. Das dritte Element dieser Zeile lautet also ''Religion (ev., kath.)''. Außerdem werden alle ASCII-Zeichen in Form des 8-Bit-Zeichensatzes [[ISO 8859-1]] verarbeitet. |
|||
== Normen und Standards == |
|||
Das Dateiformat CSV ist auch als [[Request for Comments]] (RFC) spezifiziert: |
|||
* {{RFC-Internet |RFC=4180 |Titel=Common Format and MIME Type for Comma-Separated Values (CSV) Files |Datum=2005-10}} |
|||
* {{RFC-Internet |RFC=7111 |Titel=URI Fragment Identifiers for the text/csv Media Type |Datum=2014-01}} |
|||
== Einzelnachweise == |
|||
<references> |
|||
<ref name="RFC4180"> |
|||
{{RFC-Internet |RFC=4180 |Titel=Common Format and MIME Type for Comma-Separated Values (CSV) Files |Datum=2005-10}} |
|||
</ref> |
|||
</references> |
|||
{{SORTIERUNG:CSV}} |
|||
[[Kategorie:Offenes Format]] |
Aktuelle Version vom 9. April 2025, 09:43 Uhr
CSV | |
---|---|
![]() | |
Dateiendung: | .csv
|
MIME-Type: | text/csv
|
Das Dateiformat CSV steht für englisch Comma-separated values (seltener Character-separated values[1]) und beschreibt den Aufbau einer Textdatei zur Speicherung oder zum Austausch einfach strukturierter Daten. Die Dateinamenserweiterung lautet .csv.
Ein allgemeiner Standard für das Dateiformat CSV existiert nicht, jedoch wird es im RFC 4180[2] grundlegend beschrieben; es existiert auch der neuere Standard RFC 7111.[3] Die zu verwendende Zeichenkodierung ist ebenso wenig festgelegt; 7-Bit-ASCII-Code gilt weithin als der kleinste gemeinsame Nenner.
In CSV-Dateien können Tabellen oder eine Liste unterschiedlich langer Listen abgebildet werden.
Kompliziertere, beispielsweise geschachtelte Datenstrukturen können durch zusätzliche Regeln oder in verketteten CSV-Dateien gespeichert werden. Um sie in einer Datei abzuspeichern, eignen sich jedoch andere Formate wie JSON, XML oder EDIFACT besser.
Dateiaufbau
[Bearbeiten | Quelltext bearbeiten]Innerhalb der Textdatei haben einige Zeichen eine Sonderfunktion zur Strukturierung der Daten.
- Ein Zeichen wird zur Trennung von Datensätzen benutzt. Dies ist in der Regel der Zeilenumbruch des dateierzeugenden Betriebssystems – bei dem Betriebssystem Windows sind es in der Praxis oft tatsächlich zwei Zeichen.
- Ein Zeichen wird zur Trennung von Datenfeldern (Spalten) innerhalb der Datensätze benutzt. Allgemein wird dafür das Komma eingesetzt. Abhängig von beteiligter Software und Benutzereinstellungen sind auch Semikolon, Doppelpunkt, Tabulatorzeichen, Leerzeichen oder andere Zeichen üblich.
- Häufig wird zusätzlich ein Feldbegrenzerzeichen (auch: Textbegrenzungszeichen) – normalerweise das Anführungszeichen
"
– benutzt, das die Daten umschließt, wenn es selbst oder die anderen beiden in dieser Liste genannten Zeichen in den Felddaten vorkommen. Wenn der Feldbegrenzer in den Daten enthalten ist, wird er zudem bei der Ausgabe verdoppelt (siehe Maskierungszeichen).
Der erste Datensatz kann ein Kopfdatensatz sein, der die Spaltennamen definiert.
Jeder Datensatz sollte laut RFC 4180,[2] Absatz 2, Punkt 4 die gleiche Anzahl Spalten enthalten – dies wird aber nicht immer eingehalten.
Wird für die Trennung der Datenfelder das Tabulatorzeichen verwendet, wird das Dateiformat auch als TSV (englisch Tab-separated values) bezeichnet. Es hat den Vorteil, dass Tabulatorzeichen in der Regel nicht in den Nutzdaten vorkommen. Kommen auch keine Zeilenumbrüche darin vor, erübrigt sich die Verwendung eines Feldbegrenzers. TSV kommt oft beim Austausch von Daten zwischen Tabellenkalkulations- und sonstigen Programmen über die Zwischenablage zum Einsatz.
Formatierung der Datenfelder
[Bearbeiten | Quelltext bearbeiten]Die Formatierung der Daten selbst ist nicht festgelegt. Das bedeutet, dass die verwendeten Formate zwischen den beteiligten Benutzern abgesprochen werden müssen. Besonders davon betroffen sind:
- Datums- und Zeitangaben
- Die Reihenfolge der Einzelangaben (Jahr, Monat, Tag, Stunde, Minute, Sekunde, …) kann nicht immer eindeutig erkannt werden.
- Erschwerend kommt dazu, dass insbesondere bei Datumsangaben national unterschiedliche Trennzeichen genutzt werden.
- Die kleinste Hürde in diesem Fall ist, dass die Zahlenwerte mit und ohne führende Null vorkommen.
Beispiele: Ist 04/03/02 der 4. März 2002, der 3. April 2002, der 2. März 2004 oder ein ganz anderer Wert? Entspricht 8:09 „morgens neun Minuten nach acht“, „20 Uhr 09“ oder ist es eine „Dauer von 8 Minuten und 9 Sekunden“?
- Texte
- Im Gegensatz zu XML sieht CSV keinen Vermerk des benutzten Zeichensatzes innerhalb der Datei vor. Die verwendete Zeichencodierung sollte zwischen allen Beteiligten im Vorfeld festgelegt werden.
- Zahlenwerte
- Nach der ursprünglichen Vorgabe für das CSV-Datenformat können Zahlenfelder mit fester Mindestbreite verwendet werden. Dann werden Zahlenwerte mit führenden Nullen ergänzt, um die Mindestbreite zu erhalten.
- In verschiedenen Ländern haben sich unterschiedliche Dezimal- und Tausendertrennzeichen etabliert. Über Ländergrenzen hinweg können diese Zeichen sogar gegensätzlich benutzt werden.
- Manchmal wird kein Tausendertrennzeichen eingesetzt.
- Die Formatfülle von Währungsangaben ist unüberschaubar.
- Leerfeld
- Der Feldinhalt
""
wird manchmal als leerer Inhalt und manchmal als einzelnes Anführungszeichen interpretiert.
- Der Feldinhalt
Software
[Bearbeiten | Quelltext bearbeiten]- CSV-Dateien können mit jedem Texteditor oder mit einem speziellen Programm bearbeitet werden.
- Tabellenkalkulationsprogramme und Datenbanksysteme wie z. B. Oracle oder MySQL können CSV-Dateien üblicherweise einlesen und auch exportieren, wobei Einstellungen wie Codierung, Trennzeichen, etwaige Textbegrenzungszeichen und Spaltenüberschriften in der Regel nicht vorgenommen werden können.
- Mit PHP kann eine CSV-Datei mit der Funktion „fgetcsv“ eingelesen werden.[4]
- „tarql“ stellt ein SPARQL-Interface zur Verfügung.
- Um zwei CSV-Dateien miteinander zu vergleichen, kann „csvdiff“ verwendet werden.
- Batch-Werkzeugkästen zur Bearbeitung sind „csvkit“, „csvfix“ und Miller, welches sich an üblichen Unix-Kommandos (cat, tac, tail, sort, uniq etc.) orientiert.
Anwendungen
[Bearbeiten | Quelltext bearbeiten]- Das CSV-Dateiformat wird oft benutzt, um Daten zwischen unterschiedlichen Computerprogrammen auszutauschen, beispielsweise Datenbanktabellen.
- Die Passwortdatei
/etc/passwd
der Unix-Benutzerverwaltung ist eine CSV-Datei mit dem Doppelpunkt als Trennzeichen.
Beispiel
[Bearbeiten | Quelltext bearbeiten]Der folgende Quelltext einer CSV-Datei, mit dem Komma (,
) als Feldtrennzeichen und Zeilenumbruch (CR LF) als Datensatz-Trennzeichen sowie mit Spaltenüberschriften in der ersten Zeile:
Stunde,Montag,Dienstag,Mittwoch,Donnerstag,Freitag 1,Mathematik,Deutsch,Englisch,Erdkunde,Politik 2,Sport,Deutsch,Englisch,Sport,Geschichte 3,Sport,"Religion (ev., kath.)",Kunst,,Kunst
repräsentiert die folgende Tabelle:
Stunde | Montag | Dienstag | Mittwoch | Donnerstag | Freitag |
1 | Mathematik | Deutsch | Englisch | Erdkunde | Politik |
2 | Sport | Deutsch | Englisch | Sport | Geschichte |
3 | Sport | Religion (ev., kath.) | Kunst | Kunst |
In diesem Beispiel werden die Anführungszeichen verwendet, um das Komma zwischen ev. und kath. in der letzten Zeile als Text zu kennzeichnen. Das dritte Element dieser Zeile lautet also Religion (ev., kath.). Außerdem werden alle ASCII-Zeichen in Form des 8-Bit-Zeichensatzes ISO 8859-1 verarbeitet.
Normen und Standards
[Bearbeiten | Quelltext bearbeiten]Das Dateiformat CSV ist auch als Request for Comments (RFC) spezifiziert:
- RFC: – Common Format and MIME Type for Comma-Separated Values (CSV) Files. Oktober 2005 (englisch).
- RFC: – URI Fragment Identifiers for the text/csv Media Type. Januar 2014 (englisch).
Einzelnachweise
[Bearbeiten | Quelltext bearbeiten]- ↑ Dirk Louis, Peter Müller: Das Java 6 Codebook. Pearson Education, 2007, ISBN 978-3-8273-2465-8, S. 259: „Die häufigste Variation ist der Austausch des Kommas durch ein anderes Trennzeichen, weswegen CSV oft auch als Akronym für Character Separated Values verstanden wird“
- ↑ a b RFC: – Common Format and MIME Type for Comma-Separated Values (CSV) Files. Oktober 2005 (englisch).
- ↑ Michael Hausenblas, Erik Wilde, Jeni Tennison: RFC: – URI Fragment Identifiers for the text/csv Media Type. Januar 2014 (englisch).
- ↑ fgetcsv. PHP-Handbuch.