#1
| ||||
| ||||
Intelligenter DatenImport von CSV bzw. XMLHi @ll Ich habe wieder mal eine kleine Denkaufgabe: Intelligenter DatenImport von CSV bzw. XML Was ich drunter verstehe: Der User hat einen Offline-Datenbestand und will diesen mit dem Online-Datenbestand abgleichen. Er lädt es als Datei hinauf, wobei er die Art (XML/ CSV) angibt, da es 2 verschiedene Paar Schuhe sind ;-) Das hab ich mir dazu überlegt: Die erste Zeile der CSV wird ausgelesen. Die Felder werden untereinander ausgegeben, daneben sind die Felder aus der DB jeweils in einer Select-Box Das hat den Sinn das man die Felder Zuweisen kann, kann ja sein, das die Daten-Köpfe nicht gleich sind. Nun erfolgt ein Zwischenschritt: Es wird überprüft ob kein DB-Feld doppelt vorkommt, ansonsten zurück an den Start. Nun kommt das Hauptproblem -> der eigendliche Abgleich Da ja bestehende Daten vorhanden sind, sollten diese auch weiter bestehn beleiben, aber Änderungen der Datensätze trotzdem vorgenommen werden. Ich habe mir überlegt ob man das nicht mit Regeln bewerkstelligen könnte? d.h.: Der User gibt an, wer von den 2 Datenbeständen stärker ist. Aber trotzdem bleibt das Problem mit Änderungen in einem Datensatz bestehn. * Wie erkenne ich einen bestehenden Datensatz? * Wie könnte man die SQL-Anzahl minimieren. * Genereller Ansatz PS: Es geht da nicht nur um ein Paar Datensätze, sondern um so 5.000++ Es sind Personen Daten! Für Ideen bzw Ansätze habe ich immer ein offenes Ohr. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
#2
| ||||
| ||||
Ich fasse nochmal zusammen. 1. Anwender arbeitet Offline und verändert bzw. fügt Datensätze hinzu. 2. Der _gesammte Datenbestand_, kann vom Anwender als XML oder CSV exportiert werden. Wenn du es dir nun ganz einfach machen willst, sprich ohne einem Datensatz eine höhere Priorität zuzuweisen, dann kannst du folgendermassen vorgehen. 1. CSV/XML Datei parsen. 2. Daraus _einen Query_ generieren -> INSERT INTO mytable (myvalue) VALUES ('a'), ('b') anstelle von INSERT INTO mytable (myvalue) VALUES ('a'); INSERT INTO mytable (myvalue) VALUES ('a') 3. Benutze (falls mysql 4.1.0 vorhanden) INSERT INTO mytable (myvalue) VALUES ('a') ON DUPLICATE KEY UPDATE myvalue = myvalue; Sollte das mit MySQL nicht zutreffen, dann melde dich einfach nochmal. Wenn jetzt der Anwender Offline Daten löscht, dann musst du etwas weitergehen. Ich gehe davon aus dass du Primary Keys benutzt. 1. Alle IDs der Online/Offline Datenbank in ein array laden. 2. Alle IDs von dem Online Array löschen, die auch im Offline Array vorhanden sind. 3. DELETE FROM mytable WHERE id IN(das_array_mit_den_ids); |
#3
| ||||
| ||||
Hi CannabisCow Danke für deine Ausführung. Jo mit der MySql-Db hattest du recht. Mein Problem ist, das ich in den Offline-Datenbestand keine Keys habe. Das ganze wird kunden zur Verfügung gestellt d.h. die Daten kommen aus irgendwelchen Quellen daher. Aber Ansatzt mit den mehreren Inserts mittels 1 Query is ned schlecht. Danke vorerst mal. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
#4
| ||||
| ||||
Zitat:
Könntest du das erläutern? |
#5
| ||||
| ||||
Hi @gain das ist ein B2B (Business to Business) Tool. d.h. Firmen kaufen bei uns dieses Tool um Ihre Kunden zu verwalten. Über die Eigenheiten des Projekt kann ich leider ned mehr sagen (*verboten*) In dem Tool sind schon Datenbestände, nun können die Kunden weitere hinzufügen bzw. abgleichen. Da aus verschiedensten System bzw. verschiedenste Leute die Daten zurverfügung stellen, kann es vorkommen, das Key vorhanden da sind, oder auch ned. Ich hoffe ich habe es erklären können. __________________ Sven-Marcus Maderbacher Cu l8er Nev the XxX Projekte: www.Nev-Hilft.de die Seite für Coder Master of www.Burnworld.de |
Stichworte |
- |