|
|
|
|
|
|
|||||||
| PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen |
|
|
|
LinkBack | Themen-Optionen | Thema bewerten |
|
|
#1 (permalink) | |
|
Neuer Benutzer
|
Hallo,
nach 5 Jahre regelmässiger PHP Programmierung mit einer anschliessender Pause von 4 Jahren Pause, versuch ich mich gerade wieder in die Materie einzuarbeiten. Ich habe eine *.csv Datei, und eine MySql Tabelle , ich möchte die Datensätze der CSV Datei in die Tabelle importieren, vorher aber eine Dublettensuche starten um aus der CSV Datei ggf. Daten zu entfernen die womöglich schon in der MySql Tabelle vorhanden sind. Mit der levenshtein Funktion ermittle ich eine Dubletten Wahrscheinlichkeit in %. Ich nehme einen Datensatz aus der CSV Tabelle und vergleiche ihn mit jedem Eintrag in der MySql Tabelle und prüfe derzeit wie folgt: PHP-Code:
Was aber wenn Feld A unter 80% faellt und B,C,D > 80% , dann würde hier keine Dublette erkannt. Bevor ich da jetzt für jeden Fall eine Schleife erstelle wollte ich mal fragen wie man das elegant lösen könnte. Vielen Dank schonmal. EDIT: Habe nun folgendes probiert: PHP-Code:
PHP-Code:
Danke EDIT2: Zitat:
PHP-Code:
Was meint Ihr zu dem ganzen ? Danke Geändert von elTorito (26.09.2008 um 16:04 Uhr). |
|
|
|
|
|
|
|
|
PHP Code Flüsterer
Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten
|
|
|
|
#2 (permalink) |
|
Neuer Benutzer
Registriert seit: 17.10.2008
Beiträge: 20
![]() |
Hallo,
zunächst ein Hinweis - ich empfinde es nicht als sehr klug, die Daten zunächst in einem Array zu halten und dann anschließend wegzuschreiben. Ok sagen wir es mal so - es ist abhängig von der Datenmenge. Bei sehr großen CSV Dateien kann es dann aber schnell ans Memory Limit gehen und dann ist aus die Maus. Bei kleinen CSV Dateien ist das jedoch kein Problem. ok nun mal zu deiner Lösung: PHP-Code:
Ich würde die Daten jedoch direkt in die DB schreiben und innerhalb der Funktion mit einer DB Abfrage arbeiten. Grüße Robsen Geändert von Robsen (17.10.2008 um 23:44 Uhr). |
|
|
|
|
|
#3 (permalink) |
|
Neuer Benutzer
|
Hallo Robsen,
die Sache mit dem Memory Limit habe ich schnell erfahren, leider ist es mir nicht erlaubt Daten direkt in die Datenbank zu schreiben, das Script laeuft Lokal und liest die Daten aus einer Online DB, meine Abhilfe bisher war einfach die CSV Datein zu verkleinern und das Memory Limit zu erhöhen. Mein Skript sah letzendlich wie folgt aus, versuche aber das aber jetzt nochmal an hand von deinen Tipps zu optimieren PHP-Code:
PHP-Code:
|
|
|
|
|
|
#4 (permalink) |
|
Moderator
Registriert seit: 11.05.2008
Beiträge: 3.294
![]() ![]() ![]() |
Gehts dir also jetzt nurnoch um die Performance oder klappt das ganze Skript nicht?
CSV in die MySQL druecken: MySQL :: MySQL 5.0 Reference Manual :: 12.2.6 LOAD DATA INFILE Syntax Levenshtein als STORED PROCEDURE: codejanitor Levenshtein Distance as a MySQL Stored Function |
|
|
|
|
|
#5 (permalink) |
|
Neuer Benutzer
|
Geht mir nur noch um die Performance, mit den Ergebnissen des Skripts bin ich sehr zufrieden, meine Vorgehensweise ist das ich mir alle möglichen Dubletten auflisten lasse, um dann anschliessend Manuell zu entscheiden was eine Dublette ist. Schaue mir das mit dem MySql auch nochmal an, theoritisch waere möglich das ich die CSV in eine Temporaere Tabelle einlese um dann von dort aus weiter zu arbeiten, muss ich mal mit dem Admin klaeren. Danke.
|
|
|
|
|
| Themen-Optionen | |
| Thema bewerten | |
|
|