FileAppender

Hallo, ich habe einen Haufen csv-Dateien, die ich zusammenbringen möchte. Bei meinen Tests stelle ich fest, daß ich das zwar über FTPDownload und dann FileAppender machen kann, jedoch haben die Dateien nur teilweise dieselben Spalten. Diese sollen natürlich für alle durchgezogen werden. Aber jetzt hat z.B. die zweite Datei eine Spalte der ersten nicht, womit dann ab da ein Versatz der Informationen um eine Spalte stattfindet und die Daten daher falsch eingeordnet sind. Meine Frage: Ist es möglich, den FileAppender-Step so zu machen, daß alle Daten aus gleichen Spalten für alle Datensätze korrekt untereinander stehen und bei Auftreten einer neuen Spalte in einer Datei diese einfach hinten angehängt wird? Also etwa so:

Datei 1:

ItemID;VariantID;VariantNr;EAN;Farbe;Größe

a;b;c;d;e;f

Datei 2:

ItemID;VariantID;EAN;EAN2;Farbe;Größe

g;h;i;j;k;l

==>Ergebnis jetzt:

ItemID;VariantID;VariantNr;EAN;Farbe;Größe

a;b;c;d;e;f

g;h;i;j;k;l

Was ja falsch ist!

Gewünschtes Ergebnis:

ItemID;VariantID;VariantNr;EAN;Farbe;Größe;EAN2

a;b;c;d;e;f;''

g;h;'';i;k;l;j


Ich hoffe, das Prinzip ist klargeworden. Wenn das nicht gehen sollte, müßte ich für jede einzelne Datei den Download, Reader und Mapper machen, dann alle appenden und anschließend einen Mapper mit pass-through einbauen. Geht natürlich, aber vielleicht habt ihr ja eine Idee, wie man das einfach in den FileAppender einbauen könnte?


Gruß Micha

Hallo Micha,


der FileAppender hängt nur den Inhalt von Dateien aneinander. Dem Step ist es dabei egal welches Format die Daten haben (CSV, XML, JSON, HTML...).

Im Prinzip reicht der FTPDownload und ein anschließender SpreadsheetCSVReader Step aus. Der CSVReader kann auch mehrere CSV Dateien einlesen. Die Header Zeile wird dabei immer von der 1. CSV Datei übernommen, was bei einer neuen Spalte in der 2. CSV Datei (bzw. den folgenden Dateien) zu dem Ergebnis in deinem Beispiel führt.


Die Daten sind aber im Ergebnis Spreadsheet vorhanden. D.h. du kannst die fehlenden Spalten in einem SpreadsheetMapper hinzufügen. Am besten per Freemarker im Wert Feld um Warnungen bei der Ausführung zu vermeiden

VG Torsten