Die Art und Weise, in der CSV-Daten beim Einlesen verarbeitet werden, wird in einer XML-Konfigurationsdatei angegeben. Der Name dieser Datei wird dem Kommandozeilenprogramm runcsv2ppm als Argument übergeben.
In der Konfigurationsdatei können Sie z. B. das Trennzeichen bestimmen oder Spaltenüberschriften umbenennen.
Das Format der XML-Datei ist durch folgende DTD vorgegeben:
XML-Element bzw. -Attribut |
Beschreibung |
Beispiel |
---|---|---|
csvextractor |
Konfiguration des CSV-Einlesevorgangs |
Siehe unten |
fieldseparator |
Trenner |
, |
mask |
Maskierungszeichen (eingelesene Werte werden demaskiert) |
" |
hasheaderline |
CSV-Dateien liegen mit Kopfzeile vor |
|
renamefield |
Umbenennen einer Datenspalte |
Siehe unten |
name |
Aus CSV-Dateien erzeugter Name einer Datenspalte |
MATERIAL |
newname |
Neuer Name der Datenspalte |
Artikel |
skipstartlines |
Zu ignorierende Anfangszeilen |
|
skipendlines |
Zu ignorierende Endzeilen |
|
numberoflines |
Anzahl an Anfangszeilen, die ignoriert werden sollen. Gezählt wird ab der ersten Zeile. |
10 |
pattern |
Zeichenmuster zum Auffinden einer Datenzeile, ab der Zeilen ausgelesen werden (skipstartlines: standardmäßig wird gefundene Zeile mit ausgelesen) bzw. bis zu der Zeilen ausgelesen werden (skipendlines: gefundene Zeile wird mit allen nachfolgenden Zeilen nicht ausgelesen). |
Der Ausdruck |
ignorethisline |
Datenzeile, die das gesuchte Muster enthält, im Auslesevorgang ignorieren (yes) bzw. nicht ignorieren (no). Vorgabewert: no |
ja |
mincolumn |
Angabe einer Mindestspaltenzahl zur Festlegung von Anfang und/oder Ende des auszulesenden Datenbereichs. skipstartlines: ab der ersten gefundenen Zeile (inklusiv) mit mindestens der angegebenen Spaltenzahl werden Zeilen ausgelesen. skipendlines: bis zur ersten gefundenen Zeile (exklusiv) mit weniger als der angegebenen Spaltenzahl werden Zeilen ausgelesen. |
4 |
Beispielkonfiguration (csvconfig.xml)
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE csvextractor SYSTEM 'csvextractor.dtd'>
<csvextractor>
<fieldseparator>;</fieldseparator>
<mask>"</mask>
<hasheaderline/>
<renamefield name="FIELD_3" newname=
"Erfasser der Auftragsposition"/>
<renamefield name="MATERIAL" newname="Artikelbezeichnung"/>
<skipstartlines>
<pattern ignorethisline="yes">###*</pattern>
</skipstartlines>
<skipendlines>
<pattern>5???;*;*;*;*</pattern>
</skipendlines>
</csvextractor>
Einzulesende CSV-Datei (example.csv)
Die Datei besteht aus einer Kommentarzeile, einer Kopfzeile und fünf Datensätzen:
### Auftragsdaten 25.03.2006 ###
AUFTRAGSNUMMER;POSITION;;MATERIAL;MENGE
4711;10;"Harry, ""A"" Williams";Mobile 6600;3
4811;23;"Ben, ""B"" Snyder";Mobile 6601;2
4911;15;"George, ""C"" Nyland";Mobile 6602;1
5011;6;"George, ""C"" Nyland";Mobile 5405;2
5211;23;"George, ""C"" Nyland";Mobile 5410;1
Ausgabedatei im PPM-System-Event-Format (event.xml)
Der CSV-System-Event-Generator erzeugt mithilfe der CSV-Beispielkonfiguration folgende XML-Ausgabedatei:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE eventlist SYSTEM "event.dtd">
<eventlist>
<event>
<attribute type="AUFTRAGSNUMMER">4711</attribute>
<attribute type="POSITION">10</attribute>
<attribute type="Erfasser der Auftragsposition"
>Harry, "A" Williams</attribute>
<attribute type="Artikelbezeichnung">Mobile 6600
</attribute>
<attribute type="MENGE">3</attribute>
</event>
<event>
<attribute type="AUFTRAGSNUMMER">4811</attribute>
<attribute type="POSITION">23</attribute>
<attribute type="Erfasser der Auftragsposition"
>Ben, "B" Snyder</attribute>
<attribute type="Artikelbezeichnung">Mobile 6601
</attribute>
<attribute type="MENGE">2</attribute>
</event>
<event>
<attribute type="AUFTRAGSNUMMER">4911</attribute>
<attribute type="POSITION">15</attribute>
<attribute type="Erfasser der Auftragsposition"
>George, "C" Nyland</attribute>
<attribute type="Artikelbezeichnung">Mobile 6602
</attribute>
<attribute type="MENGE">1</attribute>
</event>
</eventlist>
Folgender Kommandozeilenaufruf erzeugt aus jedem Datensatz der CSV-Daten entsprechend den Angaben in der CSV-Konfigurationsdatei jeweils ein System-Event in der XML-Ausgabedatei:
runcsv2ppm -i example.csv -csvconfig csvconfig.xml -outfile event -nozip
Für alle System-Events wird der beim Einlesen automatisch für die dritte Datenspalte vergebene Name FIELD_3 durch Erfasser der Auftragsposition ersetzt, die Datenspalte MATERIAL wird in Artikelbezeichnung umbenannt. Die maskierten Werte des Attributtyps Erfasser der Auftragsposition werden demaskiert. Die Kommentarzeile wird gemäß den Angaben zu skipstartlines im Auslesevorgang ignoriert. Die beiden letzten Zeilen des Datenbereichs werden gemäß den Angaben zu skipendlines ignoriert (Auftragsnummern 5011, 5211).