csv Import mapping
Hallo zusammen,
ich habe hier ein Problem und suche ein paar Ideen dazu wie ich dies umsetzen kann.
ich habe hier eine Stammdatentabelle die aus unterschiedlichen Datenquellen Daten bezieht. Die Datenquellen sind aber immer aus anderen SAP Systemen oder anderen Systemen unserer Betriebsführungen. Die Feldnamen dort haben hier aber andere Bezeichnungen. Ich habe x Anzahl von csv Importdateien die ich in die Zieldatei bringen muss.
Meine Idee war jetzt eine Kopie der Stammdatentabelle zu machen und die Datensätze dort beinhalten die Feldnamen der jeweiligen csv Importdatei. Nun würde ich gerne die csv.Datei auswählen von der ich gerade Daten importieren möchte. Wie kann ich das jetzt umsetzen dass die Inhalte mit den Feldnamen der Quelldatei in die Zieldatei als neue Datensätze übertragen werden. Vorab soll noch eine Prüfung stattfinden die in meinem Fall die Zählernummer(eindeutig da EU konform) und das Gewerk (Gas/Wasser)vergleicht.
Hier mal ein screenshot als Bsp:

Erstmal ist das der richtige Ansatz oder gibt es hier andere Möglichkeiten (keine externe Programme)? Wenn das so funktioniert im Prinzip hab ich aber jetzt das Problem wie ich das mit den Feldnamen mapping umsetze
Gruß Andreas
8 Antworten
-
Mein Problem ist jetzt, dass ich die Gespeicherten Tabellennamen (Daten Eingangssystem) der Quellen nicht nutzen kann mit einer select Anweisung hab gelesen das es mit eval gehen soll ist mir aber noch nicht ganz klar wie das aussehen soll
-
Das wirst du wohl nicht mit eval() hinbekommen.
Da ist es besser für jede csv eine eigene Importtabelle zu bauen und dann von dort die Daten in die ZielDB einzufügen. -
Moin,
ich kann es nicht garantieren, aber es sieht so aus, als würdest du mit der set() Funktion dieses Aufgabe lösen können. Dort können Feldnamen dynamisch übergeben werden. Das create() musst du dynamisch aufbauen, da kommt dann ggf. wieder eval() rein.
Schau mal, ob das in die richtige Richtung geht.
https://forum.ninox.com/t/q6yly90/set -
Hallo Andreas. Anliegend ein Script, welches eine CSV-Datei aus dem Bildfeld importiert, aus den Daten ein Object erstellt, in diesem Object die Spaltennamen ändert und dann die Originaltabelle füllt. Experimentell habe ich 3 CSV-Tabellen importiert, welche alle andere Spaltennamen (im Script header) hatten. Das Script funktioniert nur, wenn die Namenarrays gleich lang sind und die zu tauschenden Namen am selben Index im Array stehen. Vielleicht hilft es dir als Anregung. Der Feldname für das Bildfeld ist "CSV" und für das sharefile "shareCSV". Mirko
let headerNamesOriginal := ["Vorname", "Nachname", "Geburtstag", "Alter"]; let headerNamesCSV := ["Prénom", "Nom de famille", "Anniversaire", "Âge"]; "------------------------------------------------------------"; shareCSV := shareFile(CSV); let csv := http("get", shareCSV); let rows := splitx(raw(csv.result), "\r\n"); let header := split(item(rows, 0), ";"); let rows := rows[!= item(rows, 0)]; "----------------build an object of Values of CSV------------"; let objectValuesCSV := for row in rows do let row := split(row, ";"); let object := {}; for x in range(cnt(header)) do setItem(object, item(header, x), item(row, x)) end; object end; "-------change the headernames of object of Values of CSV----"; let objectWithNewHeader := for i in objectValuesCSV do let object := {}; for key, value in i do let pos := index(headerNamesCSV, key); setItem(object, item(headerNamesOriginal, pos), value) end; object end; "------------------fill the Table-----------------------------"; for i in objectWithNewHeader do (create Tabelle1).for key, value in i do set(this, key, value) end end
Content aside
- vor 13 StundenZuletzt aktiv
- 8Antworten
- 55Ansichten
-
4
Folge bereits
