CSV-Dateien verstehen: Was - Wofür - Wie
Der Umgang mit CSV-Dateien ist für viele Alltag, die einen Datenaustausch - sei er vollautomatisch oder semiautomatisch - zwischen verschiedenen IT-Systemen realisieren müssen. CSV-Dateien sind dabei nicht der einzige Lösungsweg, jedoch sehr verbreitet. Dies betrifft z.B. Online-Händler, um etwa die aktuellen Bestellungen von eBay in der eigenen Warenwirtschaft einzulesen (Import) oder die Buchhaltung, welche etwa Steuerauswertungen im Elster-CSV-Format exportiert (z.B. OSS, USt.).
CSV steht ursprünglich für "comma-separated values", zu Deutsch also "Komma-getrennte Werte", was eine sehr generische Formulierung ist, dem universellen Praxiseinsatz von CSV-Dateien aber auch genau entspricht. Wenngleich heute die Separierung mit Kommas eher seltener vorkommt. Aber z.B. die Standard-Elster-CSV-Formate für die Umsatzsteuermeldung über das Elster-Portal sind Komma-separiert.
Jeder, der eine Excel- oder Datenbank-Tabelle schon mal gesehen hat, weiß im Grunde schon, was eine CSV-Datei beinhaltet. Nämlich genau eine Tabelle. Diese enthält meist eine, nämlich die erste, Zeile mit den Spaltenüberschriften oder Feldnamen, was aber nicht zwingend erforderlich ist, wenn klar definiert ist, welche Spalte welche Daten enthält bzw. welche Reihenfolge die Daten haben.
'Definiert' meint hier, dass sich die austauschenden Systeme auf ein bestimmtes Format festgelegt haben. Die grundsätzlichen Eigenschaften einer CSV-Datei sind:
- Eine CSV-Datei ist eine Textdatei und enthält keine Binärdaten (höchstens in z.B. BASE64-codierter Form)
- Eine CSV-Datei kann also in jedem Texteditor geöffnet werden (z.B. Windows' Notepad)
- Die Spalten der Tabelle, die in der CSV-Datei gespeichert wird, werden durch ein definiertes Zeichen oder auch eine Sequenz von einander getrennt (Spaltentrenner)
- Der Spaltentrenner wird für jede Zeile inkl. der Spaltenüberschriftszeile (Kopfzeile) verwendet
- Der Spaltentrenner kann z.B. ein Komma oder Semikolon sein, in der Praxis am robustesten ist oftmals das Tabulatorzeichen/TAB
- Jede Zeile nach der Spaltenüberschrift entspricht einem Datensatz, der immer die gleiche Sequenz als Spalten enthält, um die tabellarische Struktur zu erhalten.
- Leere Felder (Tabellenzellen) enthalten einfach nichts, d.h., zwischen zwei Spaltentrennern stehen keine Daten; die Spaltentrenner müssen wegen der stringenten Struktur aber immer vorkommen
- Zeilen werden mit Absatzmarken (Wagenrücklauf / Carriage Return / CR & Zeilenvorschub / Line Feed / LF) von einander getrennt
- Einzelne Werte (also Tabellenzellen), die Zeilenumbrüche enthalten werden in doppelte Anführungszeichen (") gesetzt
- Da es sich um Textdateien handelt, muss die Zeichencodierung festgelegt bzw. fix gewählt werden
- Die Zeichencodierung bestimmt, in welchem Format Sonderzeichen abgespeichert werden (betrifft z.B. deutsche Umlaute, chinesische Zeichen oder das kyrillische Alphabet)
- Nur wenn das vereinbarte Encoding auf Ersteller- und Empfängerseite identisch ist, können Zeichenfehler vermieden werden
- Gängige Encoding-Formate sind z.B. UTF-8 bzw. Unicode oder ISO-8859-1
- Der konkrete Spaltentrenner sowie die Zeichencodierung werden üblicherweise festgelegt und fest vereinbart, eine Auto-Detektion ist fehleranfällig
Zeichencodierung / Encoding und Spaltentrenner
Die Zeichencodierung / das Encoding automatisch zu detektieren ist in der Praxis sehr fehleranfällig, weshalb beim Import von CSV-Dateien üblicherweise angegeben wird, welche Kombination aus Zeichencodierung (und Spaltentrenner) in der CSV-Datei verwendet wird.
Deutsche Umlaute sind ein gutes Beispiel. Generell können z.B. durch UTF-8 sämtliche Alphabete der Welt sicher übertragen werden. Wurde jedoch beim Export oder Import der CSV-Datei das Encoding falsch gesetzt, kommt es in Feldern zu typischen Zeichenfehlern wie
"ä" statt eines "ä" oder "ß" statt eines "ß". Hier kann es auch zu nicht-darstellbaren Zeichen kommen.
Da gängige Daten z.B. Kommas enthalten können, ist der Tabulator (TAB) ein besseres Trennzeichen für CSV-Dateien, um Verarbeitungsproblemen aus dem Weg zu gehen. TABs sind in Feldern wie Namen, Straßenangaben oder Artikelbeschreibungen i.d.R. nicht enthalten. Alternativ sind auch Zeichensequenzen als Trenner möglich.
Import/Export: Scriptierung & Automatisierung
In diesem Artikel geht es zwar um den Datenaustausch mittels CSV-Dateien, es soll aber angemerkt werden, dass vollautomatisierte Datenabläufe üblicherweise über Schnittstellen, z.B. APIs, JSON- oder XML-Webservices, realisiert werden. Hier befindet man sich auf der Ebene von integrierten, programmierten Abläufen, die wohldefinierten Standards folgen. Die eigentlichen Daten werden somit direkt ausgetauscht, der Austausch selbst ist für den Anwender nicht mehr sichtbar.
Wenn auf Dateiebene gearbeitet wird, können durchaus auch JSON- oder XML-Dateien verwendet werden. Diese werden jedoch in der Regel ausschließlich über Scripte und integrierte Programme erzeugt, nicht über Excel oder Libre/OpenOffice. JSON und XML können ebenfalls Tabellen abbilden, jedoch zusätzlich auch Daten in Baumstrukturen, was in einigen Fällen zur Vorteilen führt.
Der Vorteil von CSV-Dateien - sofern das Format verstanden und definiert wurde - ist deren Einfachheit, sowohl im Umgang als auch in der Beschaffenheit. Desktop-Anwendungen, die sehr nahe mit dem CSV-Format verbunden sind und dieses auch verarbeiten, d.h., Einlesen und Exportieren können, sind Microsoft Excel und LibreOffice Calc bzw. OpenOffice Calc.
Beim Austausch zwischen Systemen werden CSV-Dateien meist per Anwendung (z.B. eBay, Paypal, Afterbuy etc.), Datenbank-Script oder sonstigen Programmen generiert bzw. eingelesen. Auch die Datenmengen (z.B. Anzahl der Datensätze, also Zeilen) dürfen in CSV-Dateien sehr groß sein, sofern die Dateien effizient (z.B. zeilenweise) in einer Anwendung eingelesen werden.
Auch wenn es bei den betreffenden Systemen keine direkte Ex-/Import-Funktion geben sollte, so lässt mit dem Zugang zur Datenbank i.d.R. eine solche Funktion extern nachrüsten.
Umgang mit CSV-Dateien: Beispiele
Auch wenn Excel als Tabellenkalkulation ein sehr mächtiges Tool ist, ist der saubere Import von CSV-Dateien in unterschiedlichen Formaten nicht immer leicht zu bewerkstelligen. Libre/OpenOffice Calc hingegen bietet einen sehr einfachen Importdialog, um CSV-Dateien korrekt einzulesen und somit auch zu bearbeiten und im richtigen Format wieder speichern zu können. Es soll darauf hingewiesen werden, dass Libre/OpenOffice problemlos parallel zu MS-Office und Excel installiert werden kann und Excel auch weiterhin das Standardprogramm zur Verarbeitung von Excel- und CSV-Dateien bleibt. So kann man sich gefahrlos die bessere Verarbeitung von CSV in Libre/OpenOffice zunutze machen oder Libre/OpenOffice einfach mal ausprobieren.
Im Folgenden zeige ich eine Standard-CSV-Datei von Paypal. Es handelt sich um einen Paypal-Bericht, der aktuelle Bestellungen und Zahlungen enthält, z.B. zur Weiterverarbeitung im lokalen Warenwirtschafts- und Buchhaltungssystem. Dieser kann in der Berichtssektion auf der Paypalseite einfach generiert werden. Im Beispiel nutze ich Windows 11 mit installiertem LibreOffice.
Hier sieht man die CSV-Datei im Windows-Explorer. Auf diesem System ist kein Excel installiert, dies ist aber für die gezeigte Vorgehensweise unerheblich.
Mit der rechten Maustaste auf die Datei geklickt, wird das Kontextmenü geöffnet. Unter "Öffnen mit..." kann man nun andere Programme zum Öffnen der CSV-Datei verwenden als das Standardprogramm:
Im ersten Schritt schauen wir uns die Datei einfach mal mit dem Windows-Editor/Notepad an:
Auf den ersten Blick sieht die Anzeige halbwegs strukturiert aus, bei den ausgeblendeten Personendaten jedoch wird schnell ersichtlich, dass die Anordnung mit Tabs im simplen Editor keine gute Lesbarkeit der Datei hervorruft. Jedoch können hier einfache Änderungen an der Datei vorgenommen werden, sofern man keine Tabs löscht:
Die gleiche Datei in SciTE, einem Open-Source-Editor, mit Einblendung aller Steuerzeichen. Hier erkennt man, dass zwischen den Spalten keine Leerzeichen / Spaces sind, sondern Tabulatorzeichen:
Am Ende jeder Zeile sieht man auch die Kombination aus "Carriage Return" und "Line Feed":
Nun öffnen wir die Datei in LibreOffice. LibreOffice Calc erkennt, dass es sich weder um eine Excel- noch eine OpenDocument-Datei handelt und startet den Importfilterdialog. Hier sieht man schön, wie man für einen sauberen Import Encoding und Trennzeichen festlegen kann, und man erhält eine Vorschau, wie die Datei geparst - also importiert - werden wird:
Geöffnet kann man nun die CSV-Datei nicht mehr von einer Excel-Datei unterscheiden. LibreOffice Calc erlaubt hier nun auch Änderungen und speichert automatisch im gewählten CSV-Format aus dem Import. Im "Speichern unter..."-Menü lässt sich so auch jede geöffnete Excel-Datei in CSV exportieren!
CSV-Beispieldatei und Anwendungsbeispiel
Eine Beispieldatei in Excel mit passendem CSV-Gegenstück wie sie von unserer Software "PaketConnector" genutzt wird, finden Sie hier: Desktop-PaketConnector. Beim Import von CSV-Dateien verwenden wir das Format "UTF-8 mit TABs".
Über HissenIT
HissenIT bietet ein Spektrum aus fertigen Produkten und bewährten Lösungen sowie individuelle Softwareentwicklung. Beispielsweise entwickeln wir Web-Services oder binden diese an oder bauen Schnittstellen und Automatisierungstechniken, z.B. für den Datenimport/export.
Mit unseren hauseigenen Produkten wie InvoiceCreator und PaketConnector bieten wir einsatzbereite Software für die Erzeugung von Rechnungen, Lieferscheinen, Dokumenten allgemein und den Kauf von DHL-Versandlabels. Auch können diese Produkte als Basis für Individualsoftware oder Anpassungen dienen.
Keywords
CSV, Dateien, Daten, Datenimport, Datenexport, Datenaustausch, Automatisierung, Schnittstellen/Interfaces, Script, Generierung, Tabellen, Datenbanken, API, Webservice, eBay, Amazon, eCommerce, Warenwirtschaft, Wawi, ERP, Shop, Shopsystem
Kategorien: Hintergrundartikel Programmieren/Java Computer Ratgeber & Tipps
Kommentare
Eigenen Kommentar hinzufügen
Teilen / Weiterempfehlen
Wenn Sie diese Seite gut finden, teilen Sie es doch ihren Kontakten mit: