LOAD DATA LOCAL INFILE MySQL/PHP Problem
Hier ist meine MySQL-Tabelle Struktur
id | tracking_number | order_id
Hier ist die Struktur der CSV-Datei:
(Manchmal ist die order_id fehlt, und das scheint Probleme verursacht)
"1R2689Y603406","33097"
"1R2689Y603404","33096"
"1R2689Y603414",
"1R2689Y603429","33093"
"1R2689Y603452",
Hier ist meine aktuelle SQL-Abfrage, die nicht funktioniert:
(Die Datei ist hochgeladen und wird richtig gelesen, es ist die Abfrage selbst, die Probleme verursachen)
$sql = 'LOAD DATA LOCAL INFILE "'.$_FILES['my_file']['tmp_name'].'"
INTO TABLE table_tracking
FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "\""
LINES TERMINATED BY "\n"
(tracking_number,order_id)';
mysql_query($sql) or die(myqsl_error());
Was ist falsch mit meiner Abfrage? Vielen Dank für jede Hilfe!!!
Edit: Geändert CSV-Struktur zu repräsentieren fehlende Daten, die manchmal Auftritt.
Geändert Abfrage übereinstimmen, die ich bin jetzt mit
- Was ist der eigentliche Fehler, den Sie haben? Oder die tatsächliche unerwartete Verhalten?
- Die Informationen, die laden nicht in der Datenbank.
- versuchen mysql_query(...) or die (mysql_error()); und sagen Sie uns, was Sie sehen.
- PHP wird zum konvertieren der
\n
zu einer tatsächlichen linebreak bevor MySQL überhaupt sieht diese Abfrage, müssten Sie\\n
in diesem Fall. Die Standardeinstellung fürLINES TERMINATED BY
ist ein Zeilenumbruch sowieso, so dass Sie eigentlich nicht haben, um es zu spezifizieren. - Beachten Sie, dass MySQL verwendet Schrägstriche
/
für Dateinamen, auch auf windows. - Der Dateipfad korrekt ist, wird die Datei hochladen und Lesen von der Abfrage.
- Ich denke, wir brauchen mehr Tests. Überprüfen Sie mit einer einzigen Zeile der Datei. Auch versuchen Sie den Import der CSV mit phpmyadmin, vielleicht ist es ' ll sagen, wo es scheitert.
- Das Problem war, dass ich brauchte
/r/n
als meine line terminator. - Ah ok. Problem dann gelöst.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur versucht hier (nicht 100% sicher) aber haben Sie versucht, hinzufügen des Ziel-Spalten wie diese:
Haben Sie drei Spalten in der Tabelle und sind nur die zwei Daten.
Dieser arbeitete für mich:
Du wahrscheinlich auch brauchen, um sicherzustellen, dass Ihre Dritte Spalte einen Standardwert hat.
Statt
$_FILES['my_file']['tmp_name']
versuchendirname(__FILE__)
geben Sie den kompletten Pfad wie "C:/path/to/directory'.