Ich habe eine Frage:
Ich habe ein PHP-Script, das mir eine .csv-Datei (aus Excel exportiert) in die MySQL-DB importiert. Nun würde ich gerne bei jedem Eintrag, bevor er importiert wird, überprüfen, ob ein ähnlicher Eintrag schon in der DB existiert.
Wie mache ich das nun am besten, ohne den Server allzusehr zu belasten?
Ich nehme an, es ist nicht sonderlich ressourcenschonend, wenn ich für jeden Eintrag eine Select-Abfrage starte… oder doch?
Aber ich glaube, ich muss noch ein paar Details nachliefern…
Folgendes möchte ich machen:
Ich habe eine DB, die enthält Namen und eine dazugehörigen ID (nicht gleich DB-ID). Es kann auch mehrere Datensätze mit dem gleichen Namen (und folglich der gleichen ID) geben.
Ich möchte nun, bevor ein neuer Datensatz importiert wird, nachschauen, ob der Name schon existiert, und wenn ja, dessen ID auch für den neuen Datensatz verwenden. Wenn nein, wird eine neue ID zugewiesen.
Danke für deine Antwort, michi7x7, aber ich glaube du hast mich ein wenig falsch verstanden…
Es sollen ja genau mehrere Datensätze mit gleicher ID existieren können. Und ich möchte, falls die neuen Datensätze den gleichen Namen haben, wie ein bereits existierender, den neuen dieselbe ID zuweisen wie dem alten.
Ich glaube, ich hole mir einfach im Voraus alle Werte, die ich brauche, aus der DB in ein Array und durchsuche nacher dieses… Dann muss ich nicht zig Abfragen starten und habe mein Ziel trotzdem erreicht…
CREATE TEMPORARY TABLE new_data LIKE tabelle;
LOAD DATA INFILE '/users/USERNAME/www/datei.csv' INTO TABLE new_data;
SELECT INTO TABLE tabelle CASE WHEN o.id THAN o.id ELSE n.id AS id, o.name, ... FROM tabelle AS o, new_data AS n WHERE o.name = n.name;