Das Notes Forum
Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: Lloyd am 03.04.12 - 14:26:00
-
Hi,
ich habe folgendes Problem.
Ich importiere eine Textdatei mit über 10.000 Zeilen/Datensätzen (Jede Zeile enthält dabei 4 Werte durch Semikolon getrennt).
Innerhalb der Textdatei sind ganz viele doppelte Einträge vorhanden, was ich beim Import abfange, bzw. versuche abzufangen. Und hier ist jetzt mein Problem:
Ich lese jede Zeile einzeln ein und prüfe gegen eine View (per GetDocumentByKey) ob die aktuelle Zeile der Textdatei schon einmal importiert wurde. Wenn das so ist, füge ich in den bereits importieren Datensatz nur etwas ein.
Das klappt natürlich nicht, weil ich die Dokumente beim Import über das Backend anlege und somit die View während des Import noch nicht aufgebaut ist (Ergebnis: Er legt auch die doppelten Datensätze an, weil er diese noch nicht in der View findet.)
Führe ich den gleichen Import ein Zweites Mal aus, importiert er nichts weil ja alle Datensätze schon mindestens einmal vorhanden sind (so soll es ja auch sein).
Welchen Weg würdet ihr mir für solch einen Import empfehlen? Er sollte nach möglichkeit wenig Ressourcen verbrauchen
-
Eine Möglichkeit: Nehme alle bereits übernommenen Schlüssel in eine List-Variable.
Ein permanentes Backend-ViewRefresh reisst Dir die Performance runter.
Bernhard
-
Hallo Bernhard,
ich hab es mit der Liste umgesetzt. Ist zwar nicht die beste Performance, aber immer noch schnelller als die View neu aufzubauen.
Vielen Dank.
-
Die relativ schlechte Performance bekommst Du m.E. nur, wenn Du vorher die komplette Ansicht der alten Dokumente in die Liste einliest. Du kannst auch beide Verfahren kombinieren.
Je importierten Datensatz:
Prüfe in der Liste, ob Schlüssel vorhanden
-> ja -> aktualisiere Dokument
-> nein -> prüfe in der Ansicht, ob Schlüssel vorhanden
-> ja -> aktualisiere Dokument
-> nein -> erstelle neues Dokument
-> nimm Dokument in die Liste auf
-
Hallo Peter,
auch eine gute Idee. Werde ich auf jeden Fall probieren.
Danke