Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 10.000 Datensätze verarbeitet werden!
Willkommen, Gast
Benutzername: Passwort: Angemeldet bleiben:
Willkommen im FlowHeater Support Forum!

Hier werden Fragen zum Umgang mit dem FlowHeater beantwortet.

THEMA: CSV zu MSSQL - ID-Spalte

CSV zu MSSQL - ID-Spalte 3 Jahre 7 Monate her #1342

  • Michael Schanzel
  • Michael Schanzels Avatar
  • Offline
  • New Member
  • Beiträge: 3
Hallo,

ich habe ein kleines Problem beim Import einer CSV-Datei in MS-SQL. Aus einer CSV-Datei sollen einige Werte in eine Datenbank geschrieben werden. Felder, die nicht berücksichtigt werden sollen, habe ich im SqlServerAdapter nicht angehakt. Beim Ausführen des Testlaufs erscheint dann eine Meldung: "Spalte ´ID´gehört nicht zur Tabelle Table". Ist im SqlServerAdapter das Feld ID angehakt und mit keinem Feld von der Read-Seite verbunden, dann läuft der Testlauf ohne Probleme, der Import leider trotzdem nicht. Hier erscheint dann foldender Fehler: "Der Wert NULL kann in die ID-Spalte Firma.dbo.companies-Tabelle nicht eingefügt werden. Die Spalte lässt NULL-Werte nicht zu.Fehler bei INSERT....".
Die ID-Spalte soll aber gar nicht berücksichtigt, bzw. geändert werden.
Wo könnte der Fehler liegen?

Gruß Michael S.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: CSV zu MSSQL - ID-Spalte 3 Jahre 7 Monate her #1344

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Schanzel,

ist das Feld ID als Auto Inkrement und als PrimaryKey in der Tabelle definiert? Wenn ja benötigt der FlowHeater diese Informationen um das Feld richtig ansteuern zu können. Lesen Sie mal auf der WRITE Seite die Schemainformationen der Tabelle erneut ein und prüfen Sie ob das Feld ID im FlowHeater auch als solches erkannt wird (s. Bild).

Diese Einstellungen dürfen nur in Ausnahmenfällen von Hand geändert werden. Lassen Sie dieses Feld sichtbar und deaktivieren Sie lediglich alle anderen Felder die Sie nicht benötigen. Sie können auch alle Felder auf sichtbar belassen. Der FlowHeater verändert kein Feld, das nicht über eine Verbindung bzw. über einen Default Wert gesetzt wird. Auto Inkrement Feldern sowie Felder die zum PrimaryKey gehören behandelt der FlowHeater automatisch richtig.

Versuchen Sie mit diesen Einstellungen erneut Ihren Import durchzuführen. Sollte es nicht klappen posten Sie bitte mal zur weiteren Analyse Ihre erstellte Definition sowie den Aufbau der SQL-Server Tabelle.

Ein Beispiel wie der Import von CSV Textdateien in ein SQL-Server Tabelle inkl. Auto Inkrement Feld funktioniert finden Sie hier, evtl. Hilft Ihnen das weiter. CSV Textdatei Import in SQL Server

Anhang:
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: CSV zu MSSQL - ID-Spalte 3 Jahre 7 Monate her #1347

  • Michael Schanzel
  • Michael Schanzels Avatar
  • Offline
  • New Member
  • Beiträge: 3
Hallo Herr Stark,

das Feld ID war als Auto Increment definiert, nicht als Primery Key. Als Primery Key nutze ich das Feld Kdnr., denn dieses soll zur Identifizierung der Datensätze dienen. Der Fehler tritt aber auch auf, wenn ID als Primery Key gesetzt ist.



Wenn Auto Increment gesetzt ist, müsste dann das Feld ID nicht unberührt bleiben? ID ist auch nicht verbunden, da es in der csv keine ID gibt.

Gruß Michael S.
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: CSV zu MSSQL - ID-Spalte 3 Jahre 6 Monate her #1349

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Schanzel,

hat der FlowHeater das Tabellenschema wirklich so ausgelesen oder haben Sie hier nach dem Auslesen manuell Änderungen vorgenommen?

Sollte der FlowHeater die AutoInkrement Spalte wirklich als FlowHeater Datentyp String erkannt haben ist mit Ihrer SQL Server Tabelle was nicht in Ordnung! Das würde bedeuten, dass Ihr ID Feld in der Datenbank Tabelle als SQL Server Datentyp CHAR, VARCHAR, NCHAR, NVARCHAR oder TEXT vorhanden ist?

Bitte posten Sie mal das Tabellenschema so wie es im SQL Server Management Studio angezeigt wird. Es würde auch das CREATE TABLE SQL Skript zum Anlegen der Tabelle dazu genügen.

Hinweis: Wenn Sie im FlowHeater Configurator Feldinformationen ändern, wird nicht das Tabellenschema angepasst. Hiermit teilen Sie dem FlowHeater lediglich mit was bzw. wozu bestimmte Spalten/Felder verwendet werden sollen. Eine Änderung nach dem Auslesen des Schemas ist in den meisten Fällen nicht notwendig.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: CSV zu MSSQL - ID-Spalte 3 Jahre 6 Monate her #1351

  • Michael Schanzel
  • Michael Schanzels Avatar
  • Offline
  • New Member
  • Beiträge: 3
Hallo Herr Stark,

hier hat sich vermutlich beim Erstellen der Hardcopy ein Fehler eingeschlichen. Das Feld steht natürlich auf Integer. Ich habe nun weitere Tests mit anderen CSVs und Tabellen vorgenommen. Komischerweise geht auch hier der Testlauf problemlos, die Ausführung bricht dann direkt ab mit der selben Fehlermeldung. Ich habe nun ID als Primery Key und Auto Increment definiert. Eine Besipiel-Definition sieht folgendermaßen aus:



Hier hätte ich noch eine andere Frage: Wie kann dem Flowheater mitgeteilt werden, welche Felder aktualisiert (Datenänderung), und welche als Referenz(zum Identifizieren der Datensätze) dienen sollen? Bei diesem Szenario sollen z.Bsp. Kundenstammdaten aus einer Warenwirtschaft (CSV) in ein CRM-System (SQL) übertragen, bzw. mit diesem abgeglichen werden. Kundennummer, etc. bleibt dann immer gleich, aber Felder wie Umsatz, Telefonnummer, etc. sollen überschrieben werden - da die Warenwirtschaft das führende System ist. Geschieht das durch "Auto Increment"?

Gruß Michael Schanzel
Anhang:
Der Administrator hat öffentliche Schreibrechte deaktiviert.

Aw: CSV zu MSSQL - ID-Spalte 3 Jahre 6 Monate her #1353

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Beiträge: 1102
Hallo Herr Schanzel,

ist das Feld denn auch als Auto Inkrement (Ist Identity) in der SQL Server Tabelle definiert?

Ich denke hier liegt ein Missverständnis vor. In Ihrem Screenshot sehe ich, dass auf der WRITE Seite in der SQLServer Tabelle 2 Auto Inkrement Spalten vorhanden sind. Eine solche Tabelle können Sie im SQL Server sowie auch Access oder auch MySQL nicht anlegen. Eine Tabelle kann immer nur max. eine Spalte vom Typ Auto Inkrement (Autowert bzw. Ist Identity) haben.

Im FlowHeater können Sie natürlich von Hand nach dem einlesen der Schemainformationen diese Eigenschaften ändern, das ändert aber nicht die Tabelle an sich bzw. generiert der FlowHeater keine fortlaufenden IDs dafür. Sollten Sie das benötigen können Sie dazu den AutoID Heater verwenden.

Das Ändern der Auto Inkrement Eigenschaft im FlowHeater macht nur in Ausnahmefällen Sinn. Z.B. Wenn Sie nicht den Datenbank generierten Autowert verwenden möchten sondern einen eigenen. Das geht z.B. bei MySQL ohne Probleme, beim SQL-Server sind dafür einige Handgriffe notwendig, geht aber auch.

Das Ändern der Primary Key Feld (Schlüsselfelder) wird dagegen öfters benötigt, hiermit können Sie angeben, anhand welcher Felder der FlowHeater Daten aktualisiert bzw. wie erkannt wird ob die gleichen Daten bereits vorhanden sind.

Wann bzw. wozu werden Auto Inkrement bzw. Primary Key Felder im FlowHeater verwendet?
Bei INSERT
Auto Inkrement Felder werden nicht gesetzt, das macht die Datenbank.
Primary Key Felder werden an die Datenbank weitergereicht, sowie werden diese Felder verwendet um zu prüfen ob ein gleicher Datensatz bereits vorhanden ist, falls die Option „Vorhandene Datensätze ignorieren“ aktiviert ist

Bei UPDATE
Auto Inkrement Felder werden nicht gesetzt.
Primary Key Felder werden ebenfalls nicht gesetzt. Diese Felder werden verwendet um den Datensatz zu identifizieren.


Generell gilt, dass Schlüsselfelder im FlowHeater zur Bildung der SQL WHERE Klausel verwendet werden. Achtung: Wenn Sie Primary Key Felder (Schlüsselfelder) nach dem Einlesen des Tabellenschemas ändern kann es vorkommen das bei einem UPDATE Statement mehr als ein Datensatz geändert wird. Das würde der FlowHeater dann als Warnung ausgeben.
gruß
Robert Stark

Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Der Administrator hat öffentliche Schreibrechte deaktiviert.
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.087 Sekunden