CSV Textdatei in PostgreSQL Server Datenbank importieren
Das Beispiel zeigt wie mit Hilfe des PostgreSQL Adapters eine CSV Textdatei in eine PostgreSQL Datenbank Tabelle importiert wird. Dabei wird zusätzlich verdeutlicht wann der FlowHeater Daten beim importieren anfügt (insert) oder aktualisiert (update).
Hinweis: Nach dem gleichen Prinzip funktioniert auch der PostgreSQL CSV Export. Dazu müssen lediglich die Adapter der READ und WRITE Seite ausgetauscht werden.
Fangen wir an. Zuerst legen wir eine neue PostgreSQL Datenbank für den Import an. Öffnen Sie dazu pgAdmin III melden Sie sich am PostgreSQL Server an und legen eine neue Datenbank mit dem Namen "FlowHeater" an. Die Tabelle "Import" erzeugen wir mittels folgenden kleinen SQL Script:
(
"ID" serial NOT NULL,
"Anrede" character varying(5),
"Vorname" character varying(50),
"Name" character varying(50),
"Strasse" character varying(50),
"PLZ" character varying(5),
"Ort" character varying(50),
"GebDat" date,
CONSTRAINT "PK_ID" PRIMARY KEY ("ID" )
)
WITH (
OIDS=FALSE
);
ALTER TABLE "Import"
OWNER TO postgres;
Hiermit haben wir eine neue Tabelle mit 8 Spalten und PrimaryKey erzeugt. Der PrimaryKey (Feld ID) ist vom PostgreSQL Datentyp SERIAL (Sequence, Autowert, Identitätsspalte), dieser Wert wird also vom PostgreSQL Server selbst vergeben, darum braucht sich der FlowHeater nicht zu kümmern.
PostgreSQL Adapter auswählen
Öffnen Sie den FlowHeater und klicken den Menübefehl "Neu" an um eine neue Definition zu erzeugen. Stellen Sie im folgenden Dialog für den READ Adapter "TextFile Adapter" und für den WRITE Adapter "PostgreSQL Adapter" ein.
CSV Import Textdatei auswählen
Bestätigen Sie den Dialog mit OK und öffnen anschließend den Configurator für den READ Adapter und wählen die Datei import.csv aus dem Verzeichnis "Examples\DE\PostgreSQL" aus. Aktivieren Sie das Kontrollkästchen "Erste Zeile enthält Feldnamen" und bestätigen Sie die Nachfrage ob die Feldnamen übernommen werden sollen. Alle übrigen Einstellungen dieser Seite/Reiter belassen wir beim Standard.
Verlassen Sie den Dialog mit OK und Öffnen den Configurator für den WRITE Adapter.
PostgreSQL Import konfigurieren
Tragen Sie für den Servernamen den Rechnernamen ein auf dem bei Ihnen der PostgreSQL Server ausgeführt wird, z.B. localhost. Öffnen Sie jetzt das Kombinationsfeld für die Datenbank und wählen hier unsere oben erzeugte Datenbank "FlowHeater" aus. Wechseln Sie jetzt auf den Reiter "Felder / Datentypen".
PostgreSQL Adapter, Felder und Datentypen
Wählen Sie hier im Kombinationsfeld die Tabelle "public"."Import" aus und klicken anschließend den Button "Einlesen" an. Verlassen Sie den Dialog über OK und klicken im Designer den Befehl "Felder automatisch verbinden" (siehe rote Markierung) an.
Felder automatisch verbinden
Ihr Bildschirm sollte jetzt ungefähr so aussehen. Wir haben auf der READ Seite 2 Felder und auf der WRITE Seite 3 Felder übrig. Ziehen wir zuerst das Feld Geburtsdatum per Drag and Drop auf das Feld GebDat. Danach bewegen Sie die Maus über die eben erzeugte Pipe, so dass diese Fett gezeichnet wird und klicken dann mit der rechten Maustaste um das Kontextmenü zu öffnen. Wählen Sie den Menübefehl "Clone Heater einfügen". Die Pipe (Verbindung) wird an der Mausposition unterbrochen und der Clone Heater wird dafür eingefügt. Ziehen Sie den eben erzeugten Heater ans untere Ende des Designbereichs. So jetzt haben wir Platz um das Feld PLZ/Ort in die Felder PLZ und Ort unsere PostgreSQL Tabelle zu transformieren.
Fertige CSV Import Definition
Ziehen Sie dazu vom Heater Auswahlbereich 2x den Heater SubString auf den Designer so ca. auf Höhe der Felder PLZ und Ort. Verbinden Sie nun das Feld PLZ/Ort der READ Seite mit beiden SubString Heater. Dann verbinden Sie jeweils einen Heater mit dem Feld PLZ sowie Ort der WRITE Seite. Klicken (Doppelklick) Sie nun auf den SubString Heater der für das Feld PLZ zuständig ist. Im folgenden Dialog tragen Sie für Startindex 0 und für Länge 5 ein. Das gleiche machen wir noch mit dem Feld Ort, nur hier wählen wir für Startindex 6 und die Länge 0.
Hinweis: Der FlowHeater beginnt mit dem Wert 0 beim zählen! Die Länge 0 bedeutet bis zum Ende der Zeichenkette.
Das war´s Ihr Bildschirm sollte nun so aussehen.
CSV Import ausführen
Führen wir die Definition aus, über einen Klick auf den rot markierten Button (alternativ können Sie auch die F5 Taste betätigen) öffnet sich der Test und Ausführen Dialog des FlowHeaters (siehe unten). Hierrüber können wir den Import vor dem eigentlichen importieren testen ohne dass dabei Daten im Datenziel geändert werden. Probieren wir es aus, klicken Sie ohne eine Änderungen im Test und Ausführen Dialog vorzunehmen auf den Button "Definition ausführen".
Die Beschriftung des Buttons ändert sich auf kurz auf "Abbrechen", dann erscheint folgendes Fenster. Hinweis: über den Abbrechen Button können (langlaufende) FlowHeater Definitionen jederzeit abgebrochen werden.
PostgreSQL CSV Import Testlauf
Hier sehen wir, dass der FlowHeater das Feld ID automatisch als Serial (Autowert bzw. Identitätsspalte) erkannt hat. Schließen Sie das Fenster und deaktivieren Sie die Option "Testlauf..." im Test und Ausführen Dialog und starten die Definition erneut. Jetzt wird unsere CSV Textdatei wirklich in die Tabelle "Import" des angegebenen PostgreSQL Servers geschrieben. Beachten Sie, dass im 1. Feld "FH Action" der Wert "insert" steht. Wiederholen Sie den Vorgang ein 2. mal, der FlowHeater hat erkannt, dass es sich hierbei um einen Update handelt.
Öffnen Sie den Configurator vom PostgreSQL Adapter und deaktivieren Sie die Option "Daten aktualisieren (update)". Starten die Definition erneut und sehen Sie sich das Ergebnis an. (mit oder/und ohne Test). Der FlowHeater fügt die Datensätze erneut an die Tabelle Import an. Sie Fragen sich jetzt evtl. warum das Feld ID nicht in die Datenbank durchgereicht wird, obwohl eine Verbindung (Pipe) besteht? Das liegt an dem Feld ID, das Feld wird automatisch über die Datenbank gefüllt, da es vom PostgreSQL Datentyp Serial ist, die Pipe (Verbindung) wird hier nur für Updates benötigt.