= Tips & Tricks zum Umgang mit CSV-Dateien =
== Split mit Headern ==
Hin und wieder möchte ich eine CSV-Datei in mehrere Teile aufteilen, (z.B. um sie in kleineren Paketen bearbeiten zu können). Dazu gibt es eine Programm:
* http://www.scaled-solutions.com/blog/open-source-csv-file-splitter
Das brauchen wir aber nicht, weil wir ja LUGer und damit Shell-Magier sind. :-)
Dateien aufteilen kann man in der Shell grundsätzlich mit dem '''split'''-Kommando. Die Kunst ist nun, die Headerzeilen aus der ursprünglichen Datei in die gesplitteten wieder einzufügen.
Ich mache das so:
( tail -n+2 datei.csv | split -l 100 -d - gabe ); for file in gabe* ; do ( ( head -n 1 datei.csv ; cat $file ) > aus${file}.csv ); done; rm gabe* ; ls ausgabe*
Da dieser Einzeiler die nackten Unix-Tools benutzt, arbeitet er übrigens mit "Unix-Zeilen" und nicht mit "CSV-Zeilen", d.h. wenn eine CSV-Zeile Zeilenvorschübe enthält, gibts ggf. Ärger. Wer den vermeiden will, kann sich ja mal das Debian-Paket "csvtool" ansehen. Das kann man hier bestimmt zur Verbesserung einbauen.