Dynamischer Daten Import / Export

datenbank

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

SQL Server Import IDENTITY (Auto Inkrement) Felder

Mit diesem Beispiel möchten wir Ihnen zeigen wie Auto Inkrement (IDENTITY) Felder mit Hilfe des FlowHeater SQLServer Adapters in den SQL Server importiert werden können und was bei Imports von Auto Wert (IDENTITY) Spalten zu beachten ist.

Dieses Beispiel baut auf dem Beispiel „CSV Textdatei Import in SQL Server“ auf. Sie können daraus die MS SQL Server Tabelle sowie die zu importierende CSV Textdatei verwenden.

Hinweis: Der Auto Inkrement (IDENTITY) Insert funktioniert ab Version 3.3.0

Fangen wir an

Legen Sie zuerst eine neue FlowHeater Definition an und wählen Sie auf der READ Seite den TextFile Adapter aus um eine CSV Textdatei verarbeiten zu können. Auf der WRITE Seite verwenden Sie den SQLServer Adapter und verbinden sich mit dem MS SQL-Server und der Datenbank in der die Beispiel Tabelle vorhanden ist.

 

Vorbereitung für den Auto Wert (IDENTITY) Insert

Insert Auto Inkrement (Identity) FelderInsert Auto Inkrement (Identity) FelderÖffnen Sie den Configurator des SQLServer Adapter auf der WRITE Seite und konfigurieren Sie zuerst die allgemeinen Parameter wie Server und Datenbanknamen. Anschließend führen Sie einen Verbindungstest durch um zu verifizieren ob eine Verbindung mit den konfigurierten Werten zum SQL Server aufgebaut werden kann. Wechseln Sie nun auf den Reiter „Felder / Datentypen“, wählen die Tabelle „Import“ aus und betätigen den Button Felder „Einlesen“. Es werden nun die Feldnamen, Größen, Primary Key Informationen sowie ob es in der Tabelle ein Feld vom Typ Auto Inkrement (Identity) gibt. In unserem Beispiel besitzt die Tabelle „Import“ eine Identitätsspalte „ID“, diese Spalte ist zugleich der Primary Key. Klicken Sie nun in der Feldliste das Feld „ID“ an und deaktivieren Sie die Eigenschaft „Auto Inkrement“ (s. Screenshot). Das ist unbedingt notwendig, das sonst der FlowHeater für „Auto Inkrement“ Spalten keine SQL Insert Statements generiert.

Identity Insert aktivierenIdentity Insert aktivieren

Identity Insert aktivieren

Als nächste muss die Datenbank bzw. die Tabelle dafür vorbereitet werden. Dieses Vorbereiten erledigt der FlowHeater für Sie indem Sie auf dem Reiter „Erweitert“ die Eigenschaft „Erlaube Auto Inkrement (IDENTITY) Inserts“ aktivieren.

Das war´s auf der SQLServer Adapter WRITE Seite.

Fassen wir kurz zusammen

Um Werte in Identitätsspalten einzufügen sind zwei Schritte notwendig.

  1. Die FlowHeater Eigenschaft „Auto Inkrement“ muss für die Auto Wert Spalte deaktiviert werden.
  2. Auf dem Reiter „Erweitert“ muss das Einfügen von Auto Inkrement (IDENTITY) Werten aktiviert werden.

 

CSV Import konfigurieren

Hier verwenden wir die „import.csvCSV Textdatei aus dem vorherigen Beispiel. Öffnen Sie den TextFile Adapter Configurator der READ Seite und wählen die Datei „import.csv“ aus und schließen anschließend den Konfigurationsdialog. Um nun zu demonstrieren, dass Werte in die IDENTITY Spalte eingefügt werden verwenden wir für die ID Spalte nicht den ID Wert aus der CSV Textdatei sondern einen AutoID Heater und geben für den Startwert z.B. 10.000 an. Verbinden Sie den Ausgang des AutoID Heaters mit dem „ID“ Feld des SQL Servers. Alle anderen Felder verbinden Sie wie in dem Beispiel „CSV Textdatei Import in SQL Server“ beschrieben.

Führen Sie nun die Definition aus und schauen Sie sich das Ergebnis an. Versuchen Sie diese Import Definition ein zweites Mal auszuführen werden Sie eine Fehlermeldung erhalten wie „Verletzung der PRIMARY KEY Einschränkung. Ein doppelter Wert kann nicht …“.

Um diese Fehlermeldung zu verhindern können Sie zusätzlich entweder angeben, dass der FlowHeater nicht nur Daten an die Tabelle anfügt (Insert) sondern auch aktualisiert (Update). Oder aber Sie wählen die Option „Vorhandene Datensätze ignorieren“. In diesem Fall werden bei einer weiteren Ausführung keine Datensätze verarbeitet.

Achtung: Wenn Werte über diesen beschriebenen Weg in Auto Wert (IDENTITY) Spalten eingefügt werden und ein eingefügter Wert ist größer als der zuletzt, von der Datenbank automatisch vergebene Wert, wird dieser Wert auf den höchsten Wert (+1) aktualisiert!