CSV-Datei mit LOAD DATA INFILE einlesen
lux.w
- php
Hi Leudde,
habe schon sämtliche Foren durchforstet, aber es funzt nicht.
Ich möchte eine CSV-Datei mit dem Befehl LOAD DATA INFILE... einlesen. Die Verbindung zur Datenbank funzt.
Der Code sieht wie folgt aus:
<?
$datei = "test.txt";
$fp = fopen("$datei", "w");
fwrite($fp, $_POST['Inhalt']); // Der Dateiinhalt wird von einem Textfeld ausgelesen und dann in die Datei eingetragen.
fclose($fp);
$sql = "LOAD DATA INFILE '$datei' INTO TABLE t_bestellung FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
$result = mysql_query($sql) or die ('Error');
echo "Bestellung(en) gespeichert!";
Immer wenn der Befehl ausgeführt werden soll, kommt die Meldung Error. Ich habe auf die DB und die Datei alle Zugriffsrechte.
Danke für Eure Hilfe.
lux.w
Halihallo lux.w
$datei = "test.txt";
Notiz an den Leser: Datei ohne Verzeichnis. Nachher so direkt in SQL-
Query eingefügt.
$sql = "LOAD DATA INFILE '$datei' INTO TABLE t_bestellung FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
$result = mysql_query($sql) or die ('Error');
echo "Bestellung(en) gespeichert!";
Notiz an den Autor: Bist du verrückt? - Unverifizierte Formulardaten
gleich in die Datenbank einzulesen? - Damit kann jeder halbwegs
Wissende die ganze Datenbank löschen. Entschuldige die harte
Wortwahl, aber das ist wirklich sehr unklug.
Immer wenn der Befehl ausgeführt werden soll, kommt die Meldung Error. Ich habe auf die DB und die Datei alle Zugriffsrechte.
Wenn ein Error kommt wird er genannt! - Oder sollen wir raten?
Also gut, ich rate mal: Wie um himmels willen soll MySQL den Pfad der
Datei rauskriegen? - "test.txt" Dateien gibt es mehrere und MySQL
erwartet hier schon auch einen genauen Pfad.
http://ch2.php.net/manual/de/function.getcwd.php
Für andere Probleme siehe:
http://www.mysql.com/doc/en/LOAD_DATA_LOCAL.html
Viele Grüsse
Philipp
Halihallo lux.w
Notiz an den Autor: Bist du verrückt? - Unverifizierte Formulardaten
gleich in die Datenbank einzulesen? - Damit kann jeder halbwegs
Wissende die ganze Datenbank löschen. Entschuldige die harte
Wortwahl, aber das ist wirklich sehr unklug.
Ich ziehe diese Äusserung zurück. Es handelt sich um nicht
auszuwertende CSV-Daten und stellen somit kein mir bekanntes Risiko
(bis auf eventuelle Exploits in MySQL selber) dar.
Viele Grüsse
Philipp
Hallo Philipp,
$sql = "LOAD DATA INFILE '$datei' INTO TABLE t_bestellung FIELDS TERMINATED BY ',' ENCLOSED BY '' ESCAPED BY '\' LINES TERMINATED BY '\r\n'";
$result = mysql_query($sql) or die ('Error');
echo "Bestellung(en) gespeichert!";Immer wenn der Befehl ausgeführt werden soll, kommt die Meldung Error. Ich habe auf die DB und die Datei alle Zugriffsrechte.
Wenn ein Error kommt wird er genannt! - Oder sollen wir raten?
Mit Error meine icch das Statement bei $result = mysql_query($sql) or die('Error');
D.H. er führt die Query nicht aus.
Gruß lux.w
Halihallo lux.w
Wenn ein Error kommt wird er genannt! - Oder sollen wir raten?
Mit Error meine icch das Statement bei $result = mysql_query($sql) or die('Error');
D.H. er führt die Query nicht aus.
Und ich meinte, dass der Fehler, wenn er passiert auch genannt werden
soll. Verwende hierzu http://www.php.net/mysql_error um die
genaue Fehlerursache auszugeben und zu nennen.
Viele Grüsse
Philipp