Dynamischer Daten Import / Export

datenbank

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

CSV Textdatei Import in MySQL Datenbank

Das Beispiel zeigt wie mit Hilfe des MySQL Adapters eine CSV Textdatei in eine MySQL5 Datenbank Tabelle importiert werden kann. Es wird Schritt für Schritt erklärt und beginnt mit der Anlage einer einfachen  MySQL5 Datenbank inkl. der Importtabelle über die MySQL Workbench, bis hin zur Datenaufbereitung und Verknüpfung von einzelnen Felder. Um nicht nur den reinen Datenimport zu beschreiben wird am Ende noch erklärt wie bereits vorhandene Datensätze während des Importvorgangs aktualisiert werden können. Dabei wird zusätzlich verdeutlicht wann der FlowHeater, anhand der Primary Key Einstellungen die CSV Daten während des Datenimports anfügt (sql insert) oder aktualisiert (sql update).

Am Ende des Artikels finden Sie ein Tutorial Video, das den kompletten Ablauf für den CSV Datenimport veranschaulicht. Die fertige Definition können Sie sich im Verzeichnis Examples\DE\MySQLAdapter\csv-import-mysql.fhd ansehen. Alle Beispiele sind im ZIP Archiv zum FlowHeater enthalten.

Inhaltsverzeichnis

Hinweis: Nach dem gleichen Prinzip funktioniert auch der CSV oder FlatFile Export. Dazu müssen lediglich die Adapter der READ und WRITE Seite ausgetauscht werden.

Import Tabelle anlegen

MySQL CSV Import - Tabelle anlegenImport Tabelle anlegenFangen wir an. Zuerst legen wir die MySQL Datenbank bzw. Katalog für den Import an. Gehen Sie dazu über die MySQL Workbench und legen eine neue Datenbank/Katalog mit dem Namen FlowHeater an. Dann erzeugen Sie sich eine neue Tabelle "Import" mit folgenden Eigenschaften

Hiermit haben wir eine neue Tabelle mit 8 Spalten (ID, Anrede, Vorname, Name, Strasse, PLZ, Ort, GebDat) und PrimaryKey erzeugt. Der PrimaryKey (Feld ID) hat zusätzlich die Eigenschaft AUTO INCREMENT, dieser Wert wird von MySQL selbst vergeben, darum braucht sich der FlowHeater nicht zu kümmern.

Textdatei auswählen

MySQL CSV Import - Textdatei auswählenTextdatei auswählenÖffnen Sie nun 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 "MySQL Adapter" ein.

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\MySqlAdapter" 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.

 

Server Parameter festlegen

MySQL CSV Import - Server ParameterServer Parameter festlegenTragen Sie für den Servernamen den Rechnernamen ein auf dem bei Ihnen der MySQL Datenbank Server ausgeführt wird, z.B. localhost. Unter User/Passwort müssen Sie noch einen gültigen MySQL Benutzer mit Passwort eintragen. Öffnen Sie jetzt das Kombinationsfeld für die Datenbank und wählen hier unsere oben erzeugte MySQL Datenbank "FlowHeater" aus. Aktivieren Sie im unteren Bereich noch die Option "Daten aktualisieren (Update)". Wechseln Sie jetzt auf den Reiter "Felder / Datentypen".

 


SQL Felder und Datentypen

MySQL CSV Import - Felder und DatentypenFelder und DatentypenWählen Sie hier im Kombinationsfeld die Tabelle "Import" aus und klicken anschließend den Button "Einlesen" an.

Hiermit werden die SQL Schemainformation der Tabelle vom MySQL Server abgerufen um sie in der FlowHeater Definition mit abzuspeichern. Es werden u.a. Feldnamen, Feldlängen, Datentypen, Schlüsselinformationen (Primary Key) sowie ob einem Feld das Attribut „Auto Inkrement“ zugewiesen wurde, abgerufen.

Wichtig: Die hier ausgelesen Informationen können für Sonderfälle abgeändert werden. Z.B. können Sie durch das Ändern der Primary Key Felder steuern anhand welcher Felder der MySQL Adapters einen evtl. Update durchführen soll. Durch das manuelle Ändern hier wird nicht die zugrundeliegende MySQL Tabelle geändert!

 

Felder automatisch verbinden

MySQL CSV Import - Felder verbindenFelder verbindenVerlassen Sie den Dialog über OK und klicken im Designer den Befehl "Felder automatisch verbinden" (siehe rote Markierung) an. 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 so erzeugten Heater ans untere Ende des Designbereichs. So jetzt haben wir Platz um das Feld PLZ/Ort in die Felder PLZ und Ort unsere MySQL Server Tabelle zu transformieren.

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 1 und für Länge 5 ein. Das gleiche machen wir noch mit dem Feld Ort, nur hier wählen wir für Startindex 7 und die Länge 0.

Hinweis: Die Länge 0 bedeutet bis zum Ende der Zeichenkette!

 

Fertige Import Definition

MySQL CSV Import - Fertige DefinitionMySQL CSV Import - Fertige DefinitionDas war´s, Ihr Bildschirm sollte nun so aussehen.

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.

 

Definition ausführen

MySQL CSV Import - Definition ausführen Definition ausführenHierrü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 Änderung im Test und Ausführen Dialog vorzunehmen auf den Button "Definition ausführen".

Die Beschriftung des Buttons ändert sich kurz auf "Abbrechen", dann erscheint folgendes Fenster.

Hinweis: Über den Abbrechen Button können (langlaufende) FlowHeater Definitionen jederzeit abgebrochen werden.

 

Testlauf Ergebnis

MySQL CSV Import - Testlauf ErgebnisTestlauf ErgebnisHier sehen wir, dass der FlowHeater das Feld ID automatisch als 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 MySQL Servers geschrieben. Beachten Sie, dass das Feld ID jetzt einen Wert zugewiesen bekommen hat und 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 SQL Update handelt.

Öffnen Sie den Configurator vom MySQL 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 die Eigenschaft "AUTO INCREMENT" besitzt, die Pipe (Verbindung) wird hier nur für Updates benötigt.

 

Beispiel Video

 

 

MySQL® ist sind eingetragene Markenzeichen der MySQL AB