Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!

Verarbeitung von CSV Kopf- und Fußzeilen

Mit diesem Beispiel möchten wir Ihnen die Verarbeitung von CSV Kopf- bzw. Fußzeilen mit Hilfe von FlowHeater Parametern veranschaulichen.

Alle Beispiele sind als fertige Definition Bestandteil des FlowHeaters und können direkt über den Designer geöffnet werden!

In CSV bzw. Flat File Textdateien sind häufig Kopfzeilen und/oder Fußzeilen mit weiteren Zusatzinformationen enthalten die während des Import/Export Prozesses verarbeitet werden müssen. Sind Kopf- bzw. Fußzeilen in CSV Textdateien vorhanden haben diese meistens einen komplett anderen Aufbau als die einzelnen CSV Zeilen. Aus diesem Grund werden im FlowHeater diese Zeilen als Parameter verarbeitet. Hierbei wird jeweils eine (Kopf/Fuß) Zeile über einem separaten Parameter verarbeitet.

Ausgangssituation

In diesem Beispiel soll eine CSV Textdatei gelesen werden die 2 Kopfzeilen mit Datum und Uhrzeit der Erzeugung des Berichtes enthält sowie eine Fußzeile mit dem Datum zum aktuellen Lagerbestandes.
Daraus soll auf der WRITE Seite eine CSV Textdatei die in der Kopfzeile das Datum des aktuellen Lagerbestandes (=Fußzeile der READ Seite) sowie eine weitere Kopfzeile mit berechneten Werten wie Anzahl der Zeilen der CSV Datei, Anzahl der Gesamtartikel des Lagerbestandes sowie Gesamtbetrag des Lagerbestandes enthält. In der Fußzeile sollen die Werte (Datum und Uhrzeit) der beiden READ Kopfzeilen in nur einer Zeile ausgegeben werden.

 

Was ist zu tun

Erzeugen Sie zunächst eine neue Definition mit jeweils einen TextFile Adapter auf der READ sowie einen TextFile Adapter auf der WRITE Seite. Da Kopf- und Fußzeilen über FlowHeater Parameter abgebildet werden gehen wir zuerst über den Menüpunkt "Bearbeiten->Parameter" um FlowHeater Parameter anzulegen.
Hier legen wir insgesamt 5 Parameter (Platzhalter) an.

  • READ: Datum der Erzeugung
  • READ: Uhrzeit der Erzeugung
  • READ: Datum Lagerbestand zum
  • WRITE: Erstellungsdatum
  • WRITE: Lagerbestand weitere Infos

Hinweis: Die Namen sind willkürlich und dienen lediglich dazu die einzelnen Wert auseinander halten zu können.

Öffnen Sie nun den Configurator für die READ Seite und wählen die CSV Datei "csv-headers-footers.txt" aus. Sie sehen in der Voransicht die CSV Datei inkl. Kopf- und Fußzeilen.

Wechseln Sie nun auf den Reiter "Kopf- / Fußzeilen" und fügen Sie für Kopfzeilen die Parameter "READ: Datum Erzeugung" und "READ: Uhrzeit Erzeugung" sowie für die Fußzeile den Parameter "READ: Datum Lagerbestand zum" hinzu.

Wechseln Sie nun auf den Reiter "Allgemein" und aktivieren Sie die Option "Erste Zeile enthält Feldnamen" und übernehmen Sie die CSV Feldnamen aus der aktuellen Datei und beenden die Konfiguration der READ CSV Datei mit einem Klick auf den OK Button.

Jetzt öffnen Sie den Configurator für die WRITE Seite und geben für den Dateinamen z.B. "export.csv" an und aktivieren die Option "Erste Zeile enthält Feldnamen". Wechseln Sie anschließend auf den Reiter "Felder / Datentypen" und übernehmen Sie die CSV Spalten des READ Adapters indem Sie den Button "Feldnamen von READ Adapter kopieren" klicken. Jetzt müssen wir noch die Parameter für Kopf- und Fußzeilen zuordnen.

Das wären für Kopfzeilen "READ: Datum Lagerbestand zum" und "WRITE: Lagerbestand weitere Infos" sowie für die Fußzeile „WRITE: Erstellungsdatum“. Beachten Sie, dass die Kopfzeile "READ: Datum Lagerbestand zum" ohne weitere Anpassung direkt von der READ Seite verwendet wird. Beenden Sie den Dialog über den OK Button.

 

Parameter füllen

Nun müssen wir die definierten Parameter noch mit den notwendigen Inhalten füllen. Der Übersichtlichkeit wegen verwenden wir zwei weitere Layer auf denen wir das durchführen werden. Gehen Sie über den Menüpunkt "Bearbeiten->Layer konfigurieren" und legen zwei weitere Layer an. Geben Sie den Layern die Namen "Kopfzeilen" sowie "Fußzeilen". Klicken Sie auf OK und wechseln Sie als erstes auf den Layer "Fußzeilen".

 

Layer Fußzeilen

Hier müssen wir den Parameter "WRITE: Erstellungsdatum" füllen. Diese Zeile setzt sich aus dem statischen Wert "Erstellungsdatum:" sowie dem Datum und der Uhrzeit der beiden Kopfzeilen der READ Seite zusammen.

Ziehen Sie dazu einen Parameter Heater auf den Designer. Öffnen Sie über einen Doppelklick die Eigenschaften und stellen für die Funktion "Get" ein und wählen für Parameter den Eintrag "READ: Datum der Erzeugung" aus. Hiermit holen Sie den Inhalt der ersten Kopfzeile in die Verarbeitung.

Aus dem Inhalt

Datum der Erzeugung : 01.08.2012

müssen wir nun das Datum extrahieren. Hierzu verwenden wir einen String Split Heater und teilen den Inhalt anhand des Doppelpunktes auf. Wir lassen uns hiervon die zweite Spalte zurückgeben und haben somit nur das Datum extrahiert.

Die Uhrzeit müssen wir etwas anders auslesen, da hier das Trennzeichen für den Split Heater, der Doppelpunkt, auch in der Uhrzeit vorkommt.

Ziehen Sie dazu einen weiteren Parameter Heater auf den Designer. Öffnen Sie die Eigenschaften und stellen für die Funktion „Get“ ein und wählen für Parameter den Eintrag „READ: Uhrzeit der Erzeugung“ aus. Hiermit holen Sie den Inhalt der zweiten Kopfzeile in die Verarbeitung.

Aus dem Inhalt

Uhrzeit der Erzeugung : 12:03:55

müssen wir nun die Uhrzeit extrahieren. Hierzu verwenden wir den SubString Heater, der fix ab dem 24. Zeichen 8 Zeichen zurückliefert, die Uhrzeit.

Diese beiden Werte für Datum und Uhrzeit fügen wir nun über einen String Append Heater zusammen. Geben Sie für das Trennzeichen ein Leerzeichen an und tragen Sie hier für Prefix den statischen Wert „Erstellungsdatum:“ ein. So haben wir eine Zeile mit folgendem Inhalt generiert.

Erstellungsdatum:01.08.2012 12:03:55

Damit diese Zeile dem Parameter „WRITE: Erstellungsdatum„ zugeordnet wird benötigen wir noch einen weiteren Parameter Heater. Hier müssen Sie die Funktion „Set“ für Set Parameter auswählen sowie den Parameter „WRITE: Erstellungsdatum“ auswählen.

 

Layer CSV Kopfzeilen
Layer CSV Kopfzeilen

Layer Kopfzeilen

Auf diesem Layer müssen die Berechnungen durchgeführt werden um eine Zeile wie folgt zu erzeugen

Artikel:3 - Artikel auf Lager Gesamt:350 - Lagerwert Gesamt:6.774,50 €

und um diese Zeile dem Parameter "WRITE: Lagerbestand weitere Infos" zuzuweisen.

Auf dem Screenshot links sind 5 Zahlen (1-5) eingezeichnet die jeweils einen Schritt der Generierung der Zeile markieren.

  1. Hier werden über einen AutoID Heater die verarbeiteten CSV Zeilen gezählt. Dieser Wert wird über einen Format Heater in einen (Zahlen)Zeichenkette ohne Nachkommastellen Formatiert (Datentyp Integer) umgewandelt. Diese Zeichenkette wird dann von einem String Append Heater mit dem statischen Wert "Artikel:" von einem X-Value Heater zu einer Zeichenkette mit dem Inhalt "Artikel:3" zusammengefügt.

  2. Hier wird eine Gesamtsumme über die CSV Spalte Menge gebildet. Beachten Sie, dass hierzu im Addition Heater die Option "Auswirkung auf -> Komplette Verarbeitung" aktiviert werden muss. Die Formatierung der Zeichenfolge "Artikel auf Lager Gesamt:350" folgt dem gleichen Schema wie unter Punkt 1) beschrieben.

  3. Ähnliches Vorgehen wie unter Punkt 2) beschrieben. Hier werden lediglich vorher noch die CSV Spalten EK-Preis x Menge miteinander multipliziert. Am Ende erhalten wir hier folgende Zeichenfolge: "Lagerwert Gesamt:6.774,50 €"

  4. Diese unter Punkt 1-3 geneierten Teilzeichenfolgen werden über eine  String Append Heater zu einer Zeichenfolge zusammengefügt. Als Trennzeichen für die einzelnen Werte wurde ein Bindestrich angegeben.

  5. Das Resultat aus Punkt 4) wird hier über einen Parameter Heater dem Parameter "WRITE:Lagerbestand weiter Infos" zugewiesen.

 

Default Layer

Wechseln Sie nun auf den Default Layer und verbinden alle CSV Felder/Spalten der READ Seite 1:1 mit den Feldern/Spalten der WRITE Seite. Schneller geht es wenn Sie über den Menüpunkt "Bearbeiten->Felder Auto verbinden gehen". Hier werden Felder/Spalten mit gleichen Namen automatisch miteinander Verbunden.

 

Das war´s

Sie können die Definition jetzt ausführen und sich das Ergebnis anschauen.