Ich bin hier mit einem eigenartigen Problem fest. Ich habe ein Skript, das im Prinzip eine CSV-Datei in eine Datenbank importiert unter Verwendung fgetcsv()
in PHP. Es ist überhaupt kein Problem, und ich kann alte Einträge auch mit der MySQL-Syntax ON DUPLICATE KEY UPDATE
aktualisieren (ich bin in keiner Weise ein MySQL-Experte, daher frage ich hier).PHP MYSQL CSV importieren und dann redundante Einträge vergleichen und entfernen
ist hier, dass ein Teil des Codes:
$handle = fopen($file,"r");
fgetcsv($handle, 1000, ",");//skip first row since they are headers
while(($fileop = fgetcsv($handle, 1000, ",")) !== false) //read line by line into $fileop
{
//read array values into vars
$item1 = $fileop[0];
$item2 = $fileop[1];
$key = $fileop[2];
// and a couple more
// now INSERT/UPDATE data in MySQL table
$sql = mysql_query("INSERT INTO table (item1,item2,key)
VALUES ('$item1','$item2','$key')
ON DUPLICATE KEY UPDATE item1='$item1',item2='$item2'");
}
Das alles funktioniert gut. Was ich festhalte, ist die Tatsache, dass einige Einträge möglicherweise aus der eigentlichen CSV entfernt wurden (da der Schlüssel möglicherweise nicht mehr existiert). Ich möchte die Einträge aus der MySQL-Tabelle entfernen, die in der CSV nicht mehr vorhanden sind.
Bedeutung, wenn $key
aus CSV gegangen ist, entfernen Sie auch diese Zeile in der Datenbanktabelle. Ich nehme an, ich würde es tun, bevor ich die Insert/Update-Abfrage für die MySQL-Tabelle ausführen würde?
Ich würde jede Hilfe Jungs schätzen.
Ich verstehe die Logik hinter Ihrem Denken. Könnten Sie ein wenig mehr iterieren und mir zeigen, wie dieser Code aussehen würde? Ich bin neu in PHP und schreibe expansiven Code wie folgt, ist irgendwie neu für mich. – privilegue
Nun, es sollte nicht so schwer sein, also zögere ich, Ihnen nur die Codes zu geben, weil Sie sie einfach ausschneiden und einfügen können, und ich habe momentan keine echte Testmethode und/oder Zeit. aber eine schnelle. BERATEN WERDEN. Sie sollten es verwenden, um zu verstehen, was passieren soll, nicht kopieren! – Nanne
Danke! Ich möchte nicht kopieren/einfügen Ich möchte es tiefer verstehen. Ich habe alles, was ich bisher weiß, von Syntaxbeschreibungen und Beispielen, die Menschen dort veröffentlicht haben, gelernt. Der einfachste Weg für mich selbst zu lernen, besteht darin, Beispiele zu sehen und dann zu replizieren und auf das, was ich gelernt habe, zu erweitern. – privilegue