csv-into-map(file a, [mapname b], [keycol(s) c], [csv delim d], [csv encoding e], [clear first f], [ignore caching h], [delim for map i], [startRow j], [endRow k])


Liest eine CSV-Datei in eine Named Map ein. Hinweis: Zeilen, die mit dem Zeichen # beginnen, werden nicht eingelesen.

Parameter a ist der Pfad zur CSV-Datei, b der Name der Map, c der Spalten-Index der Schlüsselspalte, mit 1 beginnend, d ist das CSV-Trennzeichen, e ist das Datei-Encoding, Boolean f gibt an, ob die Map vorher gelöscht wird und g sorgt für Excel-Konformität.

Als Key der Map wird der Wert der Schlüsselspalte c verwendet. Als Wert zum Key wird die gesamte CSV-Zeile, einschließlich der Schlüsselspalte gespeichert, Feldtrenner ist das CSV-Trennzeichen d. Wenn als Key mehrmals derselbe Wert kommt (nicht unique), wird der vorherige Eintrag durch den letzten ersetzt.

Zusammengesetzte Keys: Wenn der Key aus den Werten mehrerer Spalten zusammengesetzt werden soll, kann man in c mehrere Spaltennummern angeben. Das zwischen den Spaltennnummern verwendete Zeichen wird bei der Bildung des Schlüssels in der resultierenden Map verwendet und darf zwischen den einzelnen Werten nicht geändert werden.

Bei wiederholtem Aufruf der Funktion wird die CSV-Datei nur dann neu eingelesen, wenn sie verändert wurde oder wenn seit dem letzten Einlesen mehr als 30 Minuten vergangen sind.

Der Rückgabewert ist die Menge an Einträgen der Map nach dem Durchlauf der Funktion.

Parameterbeschreibung


Parameter

Beschreibung

a

Pfad der CSV-Datei.

b

(optional) Name der Map. Default: default

c

(optional) Nummer der Schlüssel-Spalte(n). Default: 1

d

(optional) CSV-Trennzeichen. Default: ;

e

(optional) Datei-Encoding. Default: Das System-Encoding.

f

(optional) Wenn true, dann wird die Map vorher gelöscht. Default: true

g

(optional) Wenn true, dann wird Excel-Konformität sichergestellt. Default: false.

h

(optional) Die Funktion arbeitet per Default mit einem internen Cache, in dem aus der Datei geparste Daten gehalten werden. Wird die Datei zwischenzeitlich verändert, kann das aus verschiedenen Gründen zu Daten-Inkonsistenzen führen. Um das zu verhindern, kann man das komplette Caching deaktivieren mit dem Wert true. Default: false.

i

(optional) Das intern in der Map verwendete "Trennzeichen". Default: Das Trennzeichen aus Parameter d. Beispiel: Nehmen wir folgende CSV-Zeile an: value1;"value2;anything";value3. Wenn in Parameter d und i nichts eingetragen ist, wird in der Map intern das "Trennzeichen" (;) verwendet. Unter dem Schlüssel value1 befindet sich in der Map dann der Wert value2;anything;value3. Will man nun aber z. B. mit der Funktion get value from map(key a, name of map b, delimiter c, item d, [default e]) auslesen, was in der Map gespeichert ist, bekommt man drei Werte: value2, anything und value3, wenn man das Trennzeichen (;) angibt. Das ist natürlich falsch, da es in der CSV-Datei ursprünglich nur zwei Werte waren (value2;anything und value3). Das Trennzeichen innerhalb dieses Wertes wurde dort aber entwertet durch die Anführungszeichen (CSV-Quoting), die um den Wert gesetzt waren und diese Information ging verloren beim Schreiben in die Map. Um diesen Fehler zu umgehen, können Sie in Parameter i ein anderes internes "Trennzeichen" für die Map angeben, also z. B. (|). Dadurch enthält die Map dann unter dem Schlüssel value1 den Wert value2;anything|value3 und beim anschließenden Auslesen erhalten Sie weiterhin die zwei korrekten Werte value2;anything und value3, wenn Sie auch dort das Trennzeichen (|) verwenden.

j

(optional) Erste Zeile, die eingelesen werden soll. Index startet bei 1.

k

(optional) Letzte Zeile, die eingelesen werden soll. Index startet bei 1.


Beispiele


Gegeben sei folgende CSV-Datei value.csv.


key1_1,key1_2,value1,value2,value3
key2_1,key2_2,value4,value5,value6


Verschiedene Parameter und Ergebnisse:


Parameter a

b

c

d

e

f

g

h

i

j

k

Ergebnis

Werte der Map

./conf/example/values.csv

RESMAP


,








2

{key1_1=key1_1,key1_2,value1,value2,value3

key2_1=key2_1,key2_2,value4,value5,value6}

./conf/example/values.csv

RESMAP

2

,


true






2

{key1_2=key1_1,key1_2,value1,value2,value3

key2_2=key2_1,key2_2,value4,value5,value6}

./conf/example/values.csv

RESMAP

1#2

,


true






2

{key1_1#key1_2=key1_1,key1_2,value1,value2,value3

key2_1#key2_2=key2_1,key2_2,value4,value5,value6}