MySQL - LOAD DATA LOCAL INFILE

callofsorrow

New Member
Guten Abend,
kann man mit der Funktion von MySQL "LOAD DATA LOCAL INFILE" (wenn ich ne .csv Datei damit in die DB schreibe) irgendwie auf doppelte Einträge überprüfen (z.B. anhand von nem Namen) ?

Und diese dann eventuell überspringen und am Ende ausgeben ?
Gibts Alternativen ?


Vllt. hat hier wer damit schon Erfahrungen gemacht :)
Freue mich über jede hilfreiche Antwort!

mfg
 
Mit Load-Data geht das nicht. Der macht nur genau das was es tut: Daten in die Datenbank schreiben. Bei einem Fehler bricht er sofort ab.
Was Du möchtest kann man aber mit einem kleinen PHP-Script umsetzen.

huschi.
 
Nur wie performant ist das mit nem kleinen PHP Script ?
Sind mehrere tausend Datensätze ...

Was wäre da die eleganteste Lösung ?

Danke!

mfg
 
Zur aktuellen Darstellung gibt es nur zwei Lösungen:
1.) Load-Data intolerant gegen Fehler, ohne Dublettensuche und kein Fehlerausgabe.
2.) Script mit Fehlererkennung, Dublettensuche und Ausgabe aller Probleme.
Die Laufzeit hängt davon ab, wie performant Du es schreibst.

Du musst selber wissen, was Dir lieber ist.
Auch hast Du bisher nicht erwähnt wann und wie oft Du es brauchst. Es scheint wohl häufiger als nur 1mal zu sein, sonst wäre die Performance nicht Dein Problem, oder?
Evtl. erzählst Du mehr über den Hintergrund des Datenimports und wir können weitere Alternativen aufzählen.

huschi.
 
Danke für deine Hilfe :)

ist für nen Kunden, der auf diese Weise viele Biohöfe und Hofläden importieren möchte - er möchte diese Anzeige der doppelte Einträge (nach Titel)

das ganze ist nen Modul im Backend, sodass er immer mal wieder was hochläd
 
In dem Fall ist ein Script definitiv die bessere Lösung.
Wenn es schon ein Backend gibt, ist die halbe Arbeit ja schon getan. ;)

huschi.
 
wenn du die Inserts in ein einziges Query zusammenfasst und native PHP-Funktionen wie fgetcsv() verwendest sollte die Laufzeitdifferenz sich höchstens im Millisekunden-Bereich abspielen.
 
Back
Top