Import/Export von PostgreSQL Array Feldern
PSQL Array Felder werden im PostgreSQL Adapter als FlowHeater Datentyp STRING verarbeitet. Die einzelnen Elemente sind dabei mit geschweiften Klammern umschlossen, z.B. {"eins", "zwei", "drei"} für ein CHARACTER Array mit drei Elementen oder {1.23, 4.56} für eine NUMERIC Array mit zwei Elementen.
Der Import/Export von solchen Array Feldern ist unter PostgreSQL selbst kein Problem. Es kann problemlos ein PSQL Array Feld auf der READ Seite gelesen werden und auf der WRITE Seite über den PostgreSQL Adapter auch wieder in ein Array Feld importiert werden. Die Probleme fangen an wenn diese Felder einzeln z.B. in eine CSV Textdatei exportiert werden sollen oder die Werte als separate Werte vorliegen und in ein PSQL Array importiert werden müssen. Noch komplizierter wird es wenn mehrdimensionale Arrays verarbeitet werden müssen.
Mit diesen Beispielen möchten wir die generelle Verarbeitung von PSQL Arrays über den FlowHeater PostgreSQL Adapter veranschaulichen.
Hinweis: Die hier beschriebenen Beispiele sind als fertige Definitionen im FlowHeater Download Archiv enthalten. Sie finden die Beispiele im Unterordner ".\Examples\DE\PostgreSQLAdapter\Array-Verarbeitung\".
Vorbereitung
Um die Beispiele verwenden zu können benötigen wir eine Tabelle „t_import_array“. Im oben genannten Beispiel Verzeichnis aus dem Download Archiv finden Sie ein SQL Skript „create-table.sql“ das direkt über z.B. pgAdmin ausgeführt werden kann. Hiermit wird eine neu Tabelle „t_import_array“ mit drei Array Feldern der Datentypen
numeric(18, 2)
timestamp with time zone
sowie einem Primary Key Feld "ID" mit der Auto Inkrement (Serial) Eigenschaft angelegt. Diese Tabelle wird als Referenz für den Import sowie anschließenden Export verwendet.
CSV Import von PSQL Arrays
Wie oben beschrieben werden Array Elemente über den FlowHeater Datentyp STRING verarbeitet. Das bedeutet wir müssen, um Arrays importieren zu können, die Zeichenkette mit der richtigen SQL Syntax für den Import selbst formatieren. Für das Zusammenfügen der einzelnen Array Werte verwenden wird den String Append Heater. Pro Datentyp müssen wir lediglich die einzelnen Werte etwas anders zusammenstellen.
Import von Array CHARACTER Datentypen {"eins", "zwei", "..."}
String Replace Heater mit folgenden Optionen, siehe Screenshot.
Hier müssen wir die zu einem Array gehörenden Elemente zusammenfassen. Das komplette Array muss dabei mit geschweiften Klammern umschlossen werden. Einzelne Array Elemente werden mit einem Komma voneinander getrennt sowie ist es bei Zeichenfolgen notwendig jedes Element mit doppelten Hochkommas zu umschließen. Sollten im Text eines Array Elementes selbst auch Hochkommas vorkommen muss diesen Hochkommas ein Backslash vorangestellt werden. Um das zu tun benötigen wir pro Feld das dem CHARACTER Array hinzugefügt werden soll einen
String Append Heater, der den Inhalt pro Array Element mit doppelten Hochkommas umschließt. Als Parameter tragen wir hier für „Präfix“ und „Suffix“ jeweils ein doppeltes Hochkomma ein, siehe Screenshot.
Anschließend benötigen wir pro Feld einen
String Append Heater. Hier geben wir als Trennzeichen ein Komma an sowie verwenden als Präfix eine geöffnete geschweifte Klammer und als Suffix eine schließende geschweifte Klammer, siehe Screenshot. Das so vorbreitetet Array Feld können wir nun mit dem PostgreSQL Feld auf der WRITE Seite verbinden.
Um jetzt die so vorbereiteten einzelnen Array Elemente zu einem Array Feld hinzufügen zu können benötigen wir einen weiterenImport von Array NUMERIC Datentypen {1.23, 9.99, 20.00, ...}
Im Prinzip ähnliches Vorgehen wie bei der CHARACTER Array Verarbeitung mit dem Unterschied, dass die einzelnen Array Elemente nicht mit Hochkommas umschlossen werden dürfen sowie ist es hier zwingend erforderlich, dass als Dezimaltrennzeichen ein Punkt verwendet wird und keine Tausendtrennzeichen verwendet werden dürfen.
Um Zahlen anhand dieser Vorgaben unabhängig von der gewählten FlowHeater Standard Format Vorgabe formatiert ausgeben zu können benötigen wir pro Array Element jeweils einen String Format Heater mit folgenden Einstellungen, siehe Screenshot.
Die einzelnen Array Elemente werden wieder mit einem abschließenden String Append Heater zusammengefügt. Das Trennzeichen ist hier wiederum ein Komma sowie muss das Array Feld mit geschweiften Klammern umschlossen werden, siehe oben.
Import von Array TIMESTAMP Datentypen { 2017-01-01T10:30:15+01,2017-02-02T09:00:00+01, ...}
String Format Heater auf yyyy-MM-ddTHH:mm:ss+01 ein, siehe Screenshot.
Gleiches Vorgehen wie beim Import von Array NUMERIC Werten, siehe oben. Die Formatierung der Datumswerte muss dabei im ISO Format erfolgen. Hierzu stellen Sie die DateTime Formatierung imDas +01 am Ende der Formatzeichenfolge ist nur notwendig wenn Sie als PostgreSQL Datentyp „TIMESTAMP WITH TIME ZONE“ verwenden. +01 bedeutet dabei UTC+1 für Zeitzone Amsterdam, Berlin, Bern, Rom, Stockholm, Wien. Oder aber -07 für UTC-7 = Arizona USA.
CSV Export von PSQL Arrays
Der CSV Export von PSQL Arrays ist demnächst verfügbar!
Verarbeiten von mehrdimensionalen Array Feldern
Das Beispiel zur Verarbeitung von mehrdimensionalen Array Feldern ist demnächst verfügbar!
!!! Die Beispiele sind derzeit nur in der aktuellen Beta Version verfügbar !!!