CSVSplitter+ Gratis Programm zum splitten von CSV-Dateien
Bei der täglichen Arbeit mit Daten, seien es eigene, oder Kundendaten, treten wiederholt die gleichen Probleme auf. ODS-Dateien aus OpenOffice können nicht importiert werden. XLS-Dateien aus Microsoft-Excel fassen nur 65536 Zeilen, der Rest wird abgeschnitten. Das XLSX-Format ist zu neu und kann auch nicht gelesen werden.
Verlass ist hier immer auf CSV(Comma separated values). Als reines Textfile kann es auf jeder Plattform und mit jedem Texteditor gelesen werden. Als wiederholt auftretendes Problem stellt sich hier jedoch der Importabbruch bei großen Dateien heraus - bevorzugt tritt dieses Problem beim Import in Webapps wie PHPMyAdmin auf. Hier spielen Faktoren wie die maximale Laufzeit für PHP-Skripte, das Speicherlimit, usw. eine Rolle. Ein zuverlässiger Lösungsansatz in dieser Situation ist das Teilen der CSV-Datei in kleinere Teildateien, die erfolgreich importiert werden können.
Lösungen hierzu gibt es viele und doch irgendwie keine, Googelt man "csv splitten" bekommt man viel angeboten und wenn man mal zwei, drei Kandidaten ausprobiert, hat man nichts, das man automatisieren kann, oder CSV-Dateien mit mehreren Headerzeilen. Nun, wenn in der ersten Zeile schon Fehler auftreten, muss man davon ausgehen, dass auch in der Zeile 87641 Fehler auftreten, diesen jedoch findet man nicht. Hat man die Verantwortung für die Daten seiner Kunden, kann man mit solchen Tools dieser nicht nachkommen.
Aus diesem Grund habe ich schließlich doch selber Hand angelegt und so ist CSVSplitter+ entstanden. Es ist erhältlich als GUI-Programm für Windows und als Konsolenprogramm für die Verwendung in Batch-Files für die Automatisierung.
In der einfachsten Form werden die Dateien nach einer angegebenen Zeilenzahl getrennt. Mit den weiteren Optionen kann der "Trennpunkt" mittels Regulären Ausdrücken genauer bestimmt werden.
Funktionen/Features
- CSV File spaltenweise splitten
- In einem CSV File die Spalten zu sortieren
- CSV File spaltenweise und zeilenweise splitten
- Die CSV-Optionen wie Spaltentrennzeichen zu ändern
- Die CSV-Optionen wie Textbrgrenzungszeichen zu ändern
- Die CSV-Optionen wie Zeilenumbruch zu ändern. (Zeilenumbrüche als Inhalt in Textfeldern bleiben dabei unverändert.)
- Kostenlos
- GUI und Konsolenprogramm
- Aufteilung nach angegebener Zeilenzahl
- Teilungskriterium mittels Regularem Ausdruck spaltenbezogen definierbar (UND/ODER-Verknüpfung möglich)
- Keine Installation oder Adminrechte erforderlich.
Screenshots
Spaltenauszug - Spalten sortieren - Spaltenweise trennen
Ab der Version1.2 werden CSV-Files spaltenweise verarbeitet. Dadurch ist es
möglich nur gewisse Spalten in die neue Datei zu schreiben. Ebenso kann man
deren Reihenfolge festlegen. Dadurch können CSV-Files umsortiert, bzw.
spaltenweise getrennt werden. Die Spaltenangabe kann durch Angabe des
Spaltennamens, oder des Index(0-basierend) erfolgen. Die Form der Spaltenangabe
wird über den Kommandozeilenparameter !!!-index!!! definiert.
Eine Umsortierung erfolgt in der Form, dass man einfach alle Spalten in der
gewünschten Reihenfolge angibt.
Beispiel Sortierung:
In unserem Datenfile liegen die Spalten wie folgt:
Zeilenschlüssel;Kundennummer;Telefonnummer;Kundenname
Möchte man die Spalten umsortieren, damit der Kundenname nach der Kundennummer
folgt, sind einfach alle Spalten in der gewünschen Reihenfolge anzugeben:
Zeilenschlüssel;Kundennummer;Kundenname;Telefonnummer
Beispiel Trennung:
Ein spaltenweises Trennung erfolgt durch eine zweimaligen Auszug der jeweils
gewünschen Spaltengruppen
Wir möchten ein Datei mit den Spalten Zeilenschlüssel;Kundennummer;Kundenname
und ein zweiten File mit den Spalten Kundennummer;Telefonnummer
Teilungskriterien
Die Kriterien für die zeilenweise Teilung können spaltenbezogen definiert werden
und UND- oder ODER-Verknüpft werden. So lassen sich komplexe Szenarien
realisieren.
Die Kriterien werden in Blöcken, die Oder-Verknüpft sind definiert. Jeder Block
kann aus mehreren Kriterien, die UND-Verknüpft sind, bestehen. Jedes einzelne
Kriterium besteht aus der Angabe der Spalte und einem Regulären Ausdruck, dem
der Zelleninhalt entsprechen soll.
Der Logische Aufbau sieht daher wie folgt aus:
(
(spalte1|20)
AND
(spalte2|50)
)
OR
(
(Spalte1|20)
AND
(Spalte2|60)
)
In diesem Beispiel wird das File an den Zeilen getrennt, in denen die Spalte
"Spalte1" den Wert "20" enthält und die Spalte "Spalte2" entweder "50" oder "60".
In der Praxis entfällt die Angabe von AND und OR. Weiters werden die runden
Klammern durch spitze ersetzt. Das obige Beispiel sieht daher folgendermaßen aus:
<
<spalte1|20>
<spalte2|50>
>
<
<spalte1|20>
<spalte2|60>
>
Für die Spalte kann entweder der Spaltenname oder der Index(0-basierend)
angegeben werden. Dieses Vorgehen muß mit dem Kommandozeilenparameter für den
Indextyp übereinstimmen.
Spitzen schließenden Klammern, die im Kriteriumausdruck verwendet werden, müssen
ein Backslash vorangestellt werden. Andernfalls würde diese Klammer als Ende
des Ausdruckes erkannt werden.
Eine anders gestaltete Und/Oder-Verknüpfung wird nicht unterstützt!
Die minimale Form, in der nur eine Spalte nach einem Wert ausgewertet wird,
sieht folgendermaßen aus: <<spalte1|20>>
Präfix
Präfixzeilen sind Zeilen am Dateianfang, die vor dem Datenbereich stehen. Es kann sich beispielsweise um einen Beschreibenden Kommendar handeln, oder um einen Bestellkopf vor den Bestelldetails. Die Headerzeile ist als Spaltenüberschriften Teil des Datenblockes und gehört nicht zum Präfix.
Mit dem Parameter --sourcePrefix wird definiert aus wievielen Zeilen der Präfixblock besteht.
Der Parameter --targetPrefix gibt an, ob die Präfixzeilen in die Teildateien geschrieben werden sollen.
CLI - Konsolenversion von CSVSplitter+
Im Download-paket finden Sie auch die Datei csvsplitter_cli.exe. Diese ist für die Verwendung in der Windowskonsole bestimmt. Folgend finden Sie eine Tabelle mit den Parametern dieser Datei. Sie können ebenso die Parameter -h oder --help in der Konsole verwenden um die Hilfe angezeigt zu bekommen.
Parameter | Typ | Beschreibung |
---|---|---|
-i --inputFile | Text | Definiert die zu teilende CSV-Datei. |
-l --lineNumber | Ganzzahl | Gibt an nach wievielen Zeilen getrennt werden soll. |
-s --sourceHeader | Flag | Gibt an, ob die Quelldatei eine Kopfzeile enthält. |
-t --targetHeader | Flag | Gibt an, on in der Teildatei die Kopfzeile eingefügt werden soll. Ist --sourceHeader nicht definiert wird diese Angabe ignoriert. |
-b --splitBefore | Text | Gibt einen Regulären Ausdruck an. Es wird nur vor Zeilen getrennt, die dem Regulären Ausdruck entsprechen. Kann mit -lineNumber kombiniert werden. |
-a --splitAfter | Text | Gibt einen Regulären Ausdruck an. Es wird nur nach Zeilen getrennt, die dem Regulären Ausdruck entsprechen. Kann mit -lineNumber kombiniert werden. Wenn --splitBefore definiert ist wird diese Angabe ignoriert. |
-c --sourceTextDelimiter | Textbegrenzer in Quelle. | |
-m --sourceLineDelimiter | Zeilenumbruch in Quelle. | |
-f --sourceFieldDelimiter | Spaltentrenner in Quelle. | |
-d --sourcePrefix | Ganzzahl | Gibt an wieviele Präfixzeilen in der Quelldatei vorhanden sind. |
-n --targetTextDelimiter | Textbegrenzer in Zieldatei. | |
-o --targetLineDelimiter | Zeilenumbruch in Zieldatei. | |
-p --targetFieldDelimiter | Spaltentrenner in Zieldatei. | |
-g --targetPrefix | Gibt an, ob die Präfixzeilen in die Teildateien geschrieben werden sollen. | |
-j --indices:[i|h] | i - Spalten sind mittels Spaltennummer definiert. h - Spalten sind mittels Spaltenüberschriften definiert. | |
-e | --exportHeader | Spalten, sie in Zieldatei geschrieben werden sollen |
Systemvoraussetzungen
CSVSplitter+ sollte auf alles Windowsversionen mit .Net-Framework 2.0 laufen.
Downloads
Downloadlink | Version | Releasedatum |
---|---|---|
CSVSplitter+ v1.2.3 | v1.2.3 | 10. Mai 2020 |
CSVSplitter+ v1.2.2 | v1.2.2 | 17. August 2018 |
CSVSplitter+ v1.2.1 | v1.2.1 | 10. Juli 2018 |
CSVSplitter+ v1.2.0 | v1.2.0 | 01. Juli 2018 |
CSVSplitter+ v1.0.6 | v1.0.6 | 19. Juli 2017 |
CSVSplitter+ v1.0 | v1.0 | 17. Juli 2016 |
data.csv.zip | CSV-Demodatei mit über 2,2 Millionen Zeilen |