CSV Datei in MySQL einlesen!
Christian
- php
Hallo,
ich möchte eine CSV Datei in MySQL über ein PHP Script einlesen. Wenn ich den Befehl:
"LOAD DATA LOCAL INFILE '/Pfad/csvdatei,csv' INTO TABLE 'Tabelle' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 7 LINES;"
über die MySQL Konsole absetze funktioniert das auch bestens. Nun möchte ich den Befehl aber über ein PHP Script per "mysql_query" absetzen. Das funktioniert allerdings nicht. Hat vielleicht jemand eine Idee woran das liegen kann?
Danke im Vorraus
Gruß Chris
Hi,
"LOAD DATA LOCAL INFILE '/Pfad/csvdatei,csv' INTO TABLE 'Tabelle' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 7 LINES;"
hast du alle Zeichen korrekt maskiert, d.h. insbesondere das " innerhalb des Statements? Mit welchem Fehler scheitert dein Skript? Hast du mal das ";" am Ende entfernt?
MfG
Rouven
Also der String ist eigentlich korrekt. Es ist auch kein PHP Fehler, er schickt mir nur die "die" Nachricht, die ich selber eingegeben habe. Also muss es eigentlich ein SQL fehler sein. Aber ich glaube die SQL Fehlermeldungen sind bei mir deaktiviert. Weißt du vielleicht wie man die aktivieren kann? Hier nochmal der ganze String:
$sql = "LOAD DATA LOCAL INFILE '/home/user/csvdatei.csv/' INTO TABLE 'Tabelle' FIELDS TERMINATED BY ',' IGNORE 7 LINES";
vielleicht überseh ich auch was. Das "OPTIONALLY ENCLOSED BY '"'" Statement hab ich erstmal raus genommen, weil ich mir wegen der Maskierung nicht ganz sicher war. aber " hätte auch da gehen müssen. Das ist für den Befehl aber auch nicht wieter wichtig.
Hi,
"LOAD DATA LOCAL INFILE '/Pfad/csvdatei,csv' INTO TABLE 'Tabelle' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' IGNORE 7 LINES;"
hast du alle Zeichen korrekt maskiert, d.h. insbesondere das " innerhalb des Statements? Mit welchem Fehler scheitert dein Skript? Hast du mal das ";" am Ende entfernt?MfG
Rouven
Huhu Christian,
vermutlich gibt es ein Problem mit den Rechten.
Dein Datenbankuser braucht das "FILE privilege".
Dann muss die zu lesende Datei auch von MySQL lesbar sein.
Viele Grüße
lulu
hab mal nachgeschaut...Der User hat alle Rechte. Aber ich hab die Fehlercode Funktion wieder gefunden und er sagt mir das er die Datei nicht finden kann. Muss der Pfad vielleicht irgendwie anders angegeben werden? Das ist ja jetzt nur ein lokaler Pfad, damit kommt der vielleicht nicht zurecht.
Huhu Christian,
vermutlich gibt es ein Problem mit den Rechten.
Dein Datenbankuser braucht das "FILE privilege".
Dann muss die zu lesende Datei auch von MySQL lesbar sein.Viele Grüße
lulu
echo $begrüßung;
Es ist auch kein PHP Fehler, er schickt mir nur die "die" Nachricht, die ich selber eingegeben habe. Also muss es eigentlich ein SQL fehler sein. Aber ich glaube die SQL Fehlermeldungen sind bei mir deaktiviert.
MySQL-Fehlermeldungen sind nicht aktivierbar oder deaktivierbar (jedenfalls nicht von PHP aus.) Sie werden aber auch nicht ohne Aufforderung angezeigt.
Weißt du vielleicht wie man die aktivieren kann?
Wenn dir eine der mysql_*-Funktionen durch einen bestimmten Rückgabewert (false) mitteilt, dass etwas schiefgelaufen ist, gibt dir mysql_error() den Fehlermeldungstext dazu zurück.
echo "$verabschiedung $name";
Dank dir,
hatte die Funktion dann gestern noch gefunden. Er gibt mir halt aus das er die CSV Datei nicht finden kann. Du vielleicht eine Idee was das Problem sein könnte.
echo $begrüßung;
Er gibt mir halt aus das er die CSV Datei nicht finden kann. Du vielleicht eine Idee was das Problem sein könnte.
Wenn "er" das so sagt, wird das wohl auch stimmen. Der MySQL-Server muss die Datei finden können. Sorge dafür, dass sie in einem Verzeichnis und mit einer Berechtigung so zu liegen kommt, dass der MySQL-Server sie lesen kann.
echo "$verabschiedung $name";