- Beiträge: 8
CSV-Import zu mehreren SQL-Tables
- Frank
- Autor
- Offline
- Benutzer
Hoffe ich habe mich verständlich ausgedrückt?
Es stehen in den 4 Spalten - Werte ( Write in "Value"
1. Gelieferte Energie
2. Wirkleistung 1 ... bis Wirkleistung 3
5. Gesamtwirkleistung
Und in Quantity muss jeweils der Wert von
1. 129
2. 130 ...133
5. 140
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- StefanN
- Offline
- Benutzer
- Beiträge: 7
Auf der Reader-Seite habe ich bereits einen Prototyp .NET DataTable Adapter für unser bisheriges Format geschrieben (nach 3 Stunden testfähig :woohoo: , dank einfacher Schnittstelle und gutem Beispiel von FlowHeater).
Die Quelle hat Auftragsdaten, zwei Adressen (Abhol- und Lieferadresse) und sogenannte Öffnungszeiten, die wie oben beschrieben in mehrere Ziel "Zeilen" (Datensätze) gespeichert werden sollen.
Die Quelldaten sind alle in einer ASCII-Zeile hintereinander abgelegt.
Mappen der Daten (Verbinden der Read-Seite mit der Write-Seite)in einen SQLServer Adapter:
- Auftragsdaten in die "Auftragstabelle" (immer ein Satz)
- Abholadresse in die "Lokationstabelle" 1.Satz
- Lieferadresse in die "Lokationstabelle" 2.Satz
- Öffnungszeiten:
Beispiel:
Mo 8.00-12.00 und 13.00-17.00 Uhr (1. Satz in der Öffnungszeitentabelle)
Di 8.30-12.00 und 13.00-17.30 Uhr (2. Satz in der Öffnungszeitentabelle)
Mi 7.00-12.00 (3. Satz in der Öffnungszeitentabelle)
Gibt es in der aktuellen Version (oder in V3?) bereits eine Möglichkeit dies abzubilden. Ein Aufteilen in mehrere *.fhd´s ist erstmal keine Option, da wir dann nicht unbedingt die Transaktionssicherheit der einen Quelldatei gewährleisten können. Oder doch?
Ein Ansatz mit einem eigenen SQL-Server bzw. .NET-Datatable Adapter wäre auch eine akzeptable Lösung, wenn diese TAbellen durch den FlowHeater im Mapping angesprochen werden können.
In Ihrer "Versions-Vorschau" haben Sie bereits so etwas schon im Blickfeld. Wie hoch ist hier die Priorisierung? (falls Sie schon konkret geplant haben).
Unsere Firma ist noch in der Evaluierungsphase, deshalb kenne ich noch nicht alle Möglichkeiten und "spiele" erst seit kurzem mit der Freeware-Version, die mich persönlich begeistert :woohoo:
Danke und Gruß
Stefan
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
mit Hilfe des GroupOut Heaters können pro Eingangsdatensatz/Zeile beliebig viele, erst mal identische Kopien, auf der Write Seite angelegt werden.
Um jetzt pro Zeile unterschiedliche Daten in den einzelnen Feldern abspeichern zu können benötigen Sie pro Feld mind. eine If-Then-Else Bedingung .
Ich habe mal ein Beispiel für die Ursprüngliche Frage erstellt, siehe Anlage CSV-Daten-Duplizieren.zip
Hier werden über den GroupOut Heater pro Datensatz 4 Kopien angelegt. Dann benötigen Sie für die Bedingung Wenn 1. Kopie dann Wert, wenn 2. Kopie dann… einen AutoID Heater mit eingeschalteter GroupOut Option. Hiermit wird pro Datensatzkopie von 1 beginnend hochgezählt. Diesen Wert benötigen Sie nun für die Bedingung zum Setzen der Spalte "Value". Pro Wert der READ Seite, die Sie der Spalte „Value“ zuordnen möchten benötigen Sie einen IF-THEN-ELSE Heater. Als Bedingung tragen Sie hier 1 für erste Kopie, im zweiten IF-THEN-ELSE Heater tragen Sie 2 für zweite Kopie ein, usw.
Um jetzt die Werte auf der WRITE Seite einem Feld zuordnen zu können Verbinden Sie die Ausgänge der IF-THEN-ELSE Heater mit einem String Append Heater , den Ausgang des String Append Heaters können Sie nun mit dem eigentlichen Feld der WRITE Seite Verbinden. Hinweis: Bei Zahlen bzw. Datumsfeldern evtl. die Adapter Standardformatierung beachten!
Für das Feld SourceID verwende ich in dem Beispiel einen String Replace Heater , der als Eingang wiederrum den Output des AutoID Heaters erhält. Hier wird nun über eine CSV Ersetzungsliste der Wert 1 mit 129, der Wert 2 mit 130, … ersetzt.
Anhang csv_daten_duplizieren.zip wurde nicht gefunden.
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
Das Problem, dass lediglich die erste Spalte auf der WRITE Seite übernommen wird liegt wahrscheinlich daran, dass Sie in den IF-THEN-ELSE Bedingungen die falsche Eingangsreihenfolge verwendet haben. Der erste Eingangsparameter muss für jeden IF-THEN-ELSE Heater der AutoID Wert sein!
Bitte posten Sie mal Ihre Demo CSV Textdatei sowie die FlowHeater Definition dann passe ich das soweit an. (Bitte die beiden Dateien in ein ZIP Archiv packen)
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
Anhang Flowheater.zip wurde nicht gefunden.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
Sie waren nah dran. Ich habe auf der READ Seite das Zahlenformat geändert so dass es dem entspricht wie es in der CSV Textdatei vorkommt, siehe Screenshot.
Dann haben Sie in der IF-THEN-ELSE Bedingung Datentyp ändern auf Double gestellt. Diese Einstellung ist nur für die Bedingung vorgesehen. Bei Ganzzahlen am besten den FlowHeater Datentyp INTEGER verwenden. Der Rückgabedatentyp wird durch den IF-THEN-ELSE Heater nicht verändert.
Anhang DataLog2_mitDoubleWert.zip wurde nicht gefunden.
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
Spalte H = Value ID (muss also nicht in das IF-Statement?)
Der X-Value Wert 4 bezieht auf welchen Wert?
Danke
F.Rückert
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
Spalte H = Value ID (muss also nicht in das IF-Statement?)
Der X-Value Wert 4 bezieht sich auf welchen Wert?
Danke
F.Rückert
Anhang testfile.zip wurde nicht gefunden.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
der statische X-Value Wert "4" wird für den GroupOut Heater benötigt. Anhand dieses Wertes werden von jedem CSV Eingangssatz 4 identische Kopien angelegt = 5 Datensätze auf der WRITE Seite. Wenn Sie nur 4 Werte (Datensätze) auf der WRITE Seite ausgeben wollen müssen Sie hier für den Wert "3" angeben. So wird die Ursprüngliche CSV Zeile sowie 3 Kopien davon auf der WRITE Seite ausgegeben. Die IF-THEN-ELSE Bedingung für das nicht benötigte Feld lassen Sie dann einfach weg. Die Bedingungen müssen Sie ggf. Anpassen 1 = 1. Datensatz, 2 = 2. Datensatz, ...
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- StefanN
- Offline
- Benutzer
- Beiträge: 7
ich habe es zwar nicht getestet aber das Problem mit den Satz duplizieren und mehrere Einträge auf der Zielseite zu erzeugen ist OK.
Aber ist es auch möglich in mehr als eine Tabelle (ich kann ja immer nur eine Tabelle pro Adapter auswählen) zu schreiben?
Entweder durch die Auswahl mehrerer Tabellen (zumindest suggestiert die aktuelle Oberfläche, dass es zumindest angedacht ist) oder durch mehrere Adapter mit je einer Tabelle.
Siehe auch mein Beispiel: Readseite (Aufragsdaten, Adresse und Öffnungszeiten in je eine Tabelle)
mfg
Stefan Neubauer
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Frank
- Autor
- Offline
- Benutzer
- Beiträge: 8
da in die DB nicht die richtige Spalte übertragen wird.
Danke
Anhang Flow.zip wurde nicht gefunden.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
@Herr Neubauer) Derzeit ist das nicht möglich, dafür benötigen Sie momentan zwei (oder auch mehr) Definitionen die Sie nacheinander ausführen müssen. Die Version 3 ist jetzt bereits dafür vorbereitet dass zukünftig (in Version 3.x) mehrere Adapter auf der READ sowie auch auf der WRITE Seite verwendet werden können. Sowie wird es demnächst (auch in Version 3.x) möglich sein mehrere Steps nacheinander in einer Definition auszuführen.
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.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.