Kreative Lösungen und
zufriedene Kunden
seit
2005

Titelbild für CSVSplitter+

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

CSVSplitter+ Screenshot 1
CSVSplitter+ Screenshot 2

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.

 

ParameterTypBeschreibung
-i
--inputFile
TextDefiniert die zu teilende CSV-Datei.
-l
--lineNumber
GanzzahlGibt an nach wievielen Zeilen getrennt werden soll.
-s
--sourceHeader
FlagGibt 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
TextGibt einen Regulären Ausdruck an. Es wird nur vor Zeilen getrennt, die dem Regulären Ausdruck entsprechen. Kann mit -lineNumber kombiniert werden.
-a
--splitAfter
TextGibt 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 --sourcePrefixGanzzahlGibt 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 --targetPrefixGibt 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 | --exportHeaderSpalten, 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.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