Dynamischer Daten Import / Export

datenbank

weil Einfach - produktiver ist
Mit der Freeware Version können bis zu 100.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.
  • Seite:
  • 1

THEMA: Wert suchen und ersetzen

Wert suchen und ersetzen 10 Monate 1 Woche her #2992

  • Flo
  • Flos Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 19
Ich habe das Problem, dass ich in Datenbank1.Tabelle_FIRMA auf der READ Seite je Zeile eine ID_FIRMA habe.
In Datenbank1.Tabelle_PERSON ist in jedem Datensatz (Zeile) der Person, auch die ID_FIRMA als Verweis hinterlegt, über die die Zuordnung (Person in Firma) gegeben ist.
Beim Einlesen in eine neue Datenbank2.Tabelle_ACCOUNT ist jedoch je Datensatz eine neue ID erforderlich (es sind bereits Datensätze mit ID’s vorhanden die überschrieben würden).

Gibt es eine Möglichkeit in Datenbank2 im neuen Datensatz die alte ID_FIRMA gegen die neue ID Tauschen und somit die richtige Verknüpfung sicherstellen?
Wie und mit welchem Werkzeug (SQL oder VB/C#) macht man das am sinnvollsten?

Da ich in SQL nicht „zuhause“ bin, wäre ein funktionsfähiges Beispiel ganz hilfreich. Eine noch nicht funktionsfähige Idee habe ich nach der Problemstellung einem angefügt.

Also:
Einlesen Schritt 1:
READWRITE
Datenbank1.Tabelle_FIRMADatenbank2.Tabelle1_ACCOUNT
ID_FIRMA(alt)ID (neu fortlaufend)
FirmennameFirmenname
...

Als Zwischenlösung bestände die Möglichkeit, in der Datenbank2.Tabelle2_ACCOUNT, auch ein Feld mit z.B. ID_FIRMA_TEMP zu ergänzen [ ID_FIRMA(alt) = ID_FIRMA_TEMP ]. Oder temporär ein anderes Feld in Datenbank2.Tabelle1_ACCOUNT für die ID-Transformation zu „missbrauchen“.

Einlesen Schritt 2:
READWRITE
Datenbank1.Tabelle_PERSONDatenbank2.Tabelle_CUSTOMER
ID_PERSON(alt)ID (neu fortlaufend)
NameName
ID_FIRMAID_ACCOUNT !!! der Firma !!!

Aus meiner Sicht könnte beim Transfair der Personen nachfolgender Ansatz vielleicht, unter Verwendung einer Hilfspalte ID_FIRMA_TEMP, in die Richtung gehen.
UPDATE tabelle SET spalte = 
REPLACE(spalte,"ZU-SUCHENDER-WERT","ZU-ERSETZENDER-WERT");

Wie müsste hier der tatsächliche Code aussehen bzw. was wäre eine mögliche Lösung?
Wie müsste der notwendige Heater eingestellt werden?

Viele Grüße, Florian

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Wert suchen und ersetzen 10 Monate 1 Woche her #2994

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1248
Hallo Florian,

aus Ihrem vorherigen Post ( Probleme mit ODBC Treibern ) vermute ich, dass Sie eine bestehende alte Datenbankstruktur in eine MySQL Datenbank migrieren möchten? Wenn das so ist und sie auf der WRITE Seite den MySQL Adapter verwenden sollte das relativ einfach sein :)

MySQL bietet die Möglichkeit, dass Auto Inkrement Werte in die Datenbank importiert werden können. Voraussetzung dafür ist natürlich, dass die Werte eindeutig sind. Die MySQL Datenbank setzt dann automatisch den nächsten automatisch zu vergebenden Wert auf Basis des letzten Maximal Wertes und zählt dann von diesen Werte einfach weiter.

Um das mit dem FlowHeater tun zu können müssen Sie lediglich auf der MySQL WRITE Seite im Reiter „Felder / Datentypen“ in der Feldauflistung das Auto Inkrement Feld Auswählen und rechts daneben die Option „Auto Inkrement“ deaktivieren.
Wenn Sie das bei allen Tabellen tun die Sie importieren möchten können Sie ihre alten IDs beibehalten und brauchen weiter nichts unternehmen.

Wenn das Ihre Problem nicht löst würde ich dazu eine etwas umfangreicheres Beispiel dazu erstellen und in den allgemeinen Beispielen veröffentlichen, das sollte eh schon längst umgesetzt sein.

Anhang:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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.

Wert suchen und ersetzen 10 Monate 1 Woche her #2998

  • Flo
  • Flos Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 19
Hallo,

danke für die schnelle Rückmeldung. Den Import mit der ID Übernahme hatte ich ursprünglich versucht. Leider überschneiden sich die ID Bereiche der Tabellen auf zu importierenden Daten, wodurch ID Bereiche auf der WRITE Seite Import der jeweiligen Tabelle teils überschrieben werden. Ich habe einmal eine Skizze zum hoffentlich besserem Verständnis angefügt.

Anhang:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Wert suchen und ersetzen 10 Monate 1 Woche her #3001

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1248
Hallo Florian,

die Beschreibung ist perfekt, Danke. Das angesprochene ausführliche Beispiel zur MySQL Datenmigration wird bis Anfang nächster Woche fertigstellt.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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.

Wert suchen und ersetzen 10 Monate 6 Tage her #3004

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1248
Hallo Florian,

das Beispiel zur MySQL Datenmigration finden Sie hier: Daten nach MySQL migrieren

Ist leider noch nicht ganz fertig, es fehlen noch Formatierungen, Verlinkungen, Screenshot, etc., aber ich denke auf der Basis können wir hier weitermachen.

Im Anhang finden Sie ein paar Beispiel Definitionen die ich dafür verwendet habe. In Ihrem Fall würde der im Beispiel beschriebene CSV Lookup reichen, allerdings müssen Sie für Ihren konkreten Fall den Schlüssel um die Tabelle erweitern (s. Beispiel import-kunden-III.fhd). Hier reicht es nicht aus lediglich die „Alte“ ID in der ersten CSV Spalte zu sondern Sie benötigen zusätzlich noch die Tabelle von der der ursprüngliche Wert stammt.

Um die Beispiele verwenden zu können benötigen Sie die aktuelle Beta Version von hier. Hier wurde die Möglichkeit geschaffen den Auto Inkrement Wert auch im TextFile Adapter abzufragen.

FlowHeater Beta 32 Bit
FlowHeater Beta 64 Bit
FlowHeater Server Beta

Dateianhang:

Dateiname: mysql-migration.zip
Dateigröße: 14 KB
Anhang:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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.

Wert suchen und ersetzen 7 Monate 2 Wochen her #3162

  • Flo
  • Flos Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 19
Hallo FlowHeater Team,

auch wenn ich mitlerweile rech tief in FlowHeter eingestiegen bin, kommen ich derzeit an einer Stelle nicht weiter.

Folgendes Problem:
Auf der READ-Seite habe ich ein Feld "Land" mit verschiedensten Länderkürzeln das teils auch lehr ist.
Mit dem REPLACE Heater möchte ich aus dem verschiedensten Abkürzungen nun eine einheitliche Bezeichnung erhalten.
Die Vorgehensweise ist beknannt und an anderer Stelle auch schon mehrfach umgesetzt.

Auf der WRITE-Seite habe ich jedoch trotz diverser Versuch mit If-Then-Else, .Net-Adapter Variablen = 0 setzen, etc das Problem,
dass wenn einmal ein Land im Feld enthalten war (und vom Relace Heater) gefunden wurde,
bei allen weiteren darauf folgenden "lehren" Feldern das gleiche Land ausgegeben wird/auf WRITE eingetragen wird,
bis wieder mal KEIN lehres Feld, sondern ein anderes Land enthalten ist.
Dann ist das gleiche Spiel mit diesem Land bis zum nächsten Feld!=<EMPTY>, dass sich das Land erst dann wieder ändert.

Kennt jemand das Problem? Gibt es eine Einstellung die ich übersehe?
Ich komme hier nicht weiter und sehe den Fehler nicht!

Egal ob mittels SQL oder SET/GET .... wo liegt der Fehler?
READ=ODBC -> WRITE=MySQL, FlowHeater 4.0.8.2 32Bit

Angefügt noch die entsprechende Definitionen "Kunden" aber auch noch zwei Varianten als SQL und SET/GET.
Der Fehler taucht jedoch mit und ohne .Net Adapter auf

Vorab schon einmal Vielen Dank,
Florian
Anhang:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Wert suchen und ersetzen 7 Monate 2 Wochen her #3164

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1248
Hallo Florian,

im Anhang finden Sie ein kleines Beispiel wie Sie einen Parameter setzen können, der dann solange verwendet wird solange kein anderer Wert vorhanden oder aber leer ist.

Sie benötigen dazu einen IF-THEN-ELSE Heater der prüft ob der gerade anliegende Wert leer ist. Wenn der nicht leer ist wird der Wert verwendet. Ist der anliegende Wert leer bzw. hat keinen Inhalt wird der aktueller Wert eines Parameters verwendet ( Get Parameter Heater ). Das Resultat wird dann mittels eines Set Parameter Heater dem Parameter zugewiesen.

Anschließend kann der Wert in der Definition wieder entweder über $PARAMETER-NAME$ oder aber über den Get Parameter Heater verwendet werden.

Dateianhang:

Dateiname: solange-nicht-leer.zip
Dateigröße: 2 KB
Anhang:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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.

Wert suchen und ersetzen 7 Monate 2 Wochen her #3165

  • Flo
  • Flos Avatar Autor
  • Offline
  • New Member
  • New Member
  • Beiträge: 19
Hallo Herr Stark,

danke für die schnelle Rückmeldung. Hier scheine ich mich jedoch nicht ganz klar ausgedrückt zu haben.
Und zwar verhält es sich so wie sie beschrieben haben leider von alleine, was jedoch gar nicht gewünscht ist, leider auch nicht abgestellt werden kann!

Wenn ich z.B von 1000 Satensätzen mit LAND=<EMTY> mur beim 300. USA drin habe,
steht leider bei allen weiteren Datensätzen zwischen 300-1000 auch USA drin,
obwohl das Feld lehr ist über andere Bedingungen vielleicht Deutschland rein müsste.

Als ob bei "LEHREN" Datensätzen was "hängen bleiben" würde und ein System- oder Programmspeicherbereich nicht gelöscht würde.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Wert suchen und ersetzen 7 Monate 2 Wochen her #3166

  • FlowHeater-Team
  • FlowHeater-Teams Avatar
  • Offline
  • Administrator
  • Administrator
  • Beiträge: 1248
Hallo Florian,

ich denke nicht, dass das ein Problem vom verwendeten String Replace Heater für den CSV Lookup ist. Im Anhang finden Sie ein Beispiel, wo die Arbeitsweise genau so funktioniert wie Sie es zuletzt beschrieben haben.

Nach Analyse Ihrer Definition denke ich es liegt am verwendeten IF-THEN-ELSE Heater für das Feld „PLZ_Flag“, siehe Screenshot.

Wenn Sie den IF-THEN-ELSE Heater mit nur einem Eingangsparameter verwenden haben Sie als Ausgang immer den Booleschen Wahrheitswert TRUE/WAHR oder FALSE/FALSCH.

z.B. ist im Feld eine 0 vorhanden erhalten Sie FALSCH, bei allen anderen Werten WAHR!

Diesen Wert verwenden Sie im .NET Script Heater um selbst irgendwelche SQL Statements zusammenzustellen.

Sie greifen den Wert im Skript über folgenden Zeile ab.

int PLZ_Flag = (int)InValues[0].GetInt();

und prüfen weiter unten im Skript auf 0, 1, 2 oder 3 und generieren dann unterschiedliche SQL Statements. Das Problem dabei ist, dass der so abgegriffene Wert nur 0 oder 1 haben kann! Ich denke es sollte reichen wenn Sie den betroffenen IF-THEN-ELSE Heater aus der Definition löschen und das Feld „PLZ_Flag“ direkt mit den anschließenden Heatern/Funktionen verbinden.



Dateianhang:

Dateiname: leere-eintraege.zip
Dateigröße: 19 KB
Anhang:

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

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.
  • Seite:
  • 1
Moderatoren: FlowHeater-Team
Ladezeit der Seite: 0.686 Sekunden