phpMyAdmin: CSV importieren mit LOAD DATA geht nicht
RaMa
- datenbank
1 Cheatah0 RaMa0 Cheatah
0 Tom0 Alexander (HH)
Hallo allerseits,
ich hab gerade ein etwas seltsames Problem. Wenn ich eine CSV-Datei mit phpMyAdmin 2.11.9.3 über "CSV mit LOAD DATA" importieren will, kommt folgende Meldung:
Der Import wurde erfolgreich abgeschlossen, 1 Abfragen wurden ausgeführt.
Der ausgegebene SQL-Anweisung sieht so aus:
LOAD DATA LOCAL INFILE '/tmp/phpOOqlnv' INTO TABLE
table FIELDS TERMINATED BY ';' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n'# MySQL lieferte ein leeres Resultat zurück (d. h. null Zeilen).
D.h., es wird tatsächlich nichts importiert!
Dies ist die Tabellenstruktur.
CREATE TABLE IF NOT EXISTS `table` (
`col1` text NOT NULL,
`col2` int(11) NOT NULL,
`col3` text NOT NULL,
PRIMARY KEY (`genID`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Selbst wenn die CSV-Datei nur diesen einen Beispieldatensatz enthält (selbstverständlich als UTF8 gespeichert), taucht dieser anschliessend nicht in der Datenbank auf.
"test";1234;"test"
Kann doch irgendwie nicht sein oder?
Bin für jeden konstruktiven Beitrag dankbar.
Rainer
Hi,
Bin für jeden konstruktiven Beitrag dankbar.
die CSV-Datei liegt auch tatsächlich da, wo der SQL-Server sie sucht?
Cheatah
die CSV-Datei liegt auch tatsächlich da, wo der SQL-Server sie sucht?
Cheatah
Das hoffe ich mal stark. Sowohl phpMyAdmin als auch MySQL sind vom Provider bereitgestellt. Vielleicht sollte ich dort mal nach der Konfiguration fragen.
Aber müsste es dann nicht eine Fehlermeldung ala "File not found" o.ä. geben? Der Server verhält sich imho so, als hätte er eine leere statt gar keiner Datei eingelesen. Die Datei ist aber nicht leer.
Rainer
Hi,
Aber müsste es dann nicht eine Fehlermeldung ala "File not found" o.ä. geben?
mangels Erfahrung mit dem Thema kann ich Dir das leider nicht sagen. Möglicherweise fehlt aber auch einfach nur ein OPTIONALLY zum ENCLOSED BY.
Cheatah
Hello,
Bin für jeden konstruktiven Beitrag dankbar.
die CSV-Datei liegt auch tatsächlich da, wo der SQL-Server sie sucht?
Darf der SQL-Server sie da überhaupt suchen?
Sitzt eventuell noch jemand auf der Datei drauf?
Mit welchen Attributen bzw. Flags wurde die Datei angelegt?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo Tom,
die CSV-Datei liegt auch tatsächlich da, wo der SQL-Server sie sucht?
Darf der SQL-Server sie da überhaupt suchen?
Ja. Sie wird ihm ja vom Client verfüttert!
Hier ist Client der Webserver :-)
Wenn mindestens einer der beiden Beteiligten es nicht darf, muss es zur Fehlermeldung
ERROR 1148: The used command is not allowed with this MySQL version
kommen. Der OP sagt jedoch ausdrücklich, dass es nicht zu einer Fehlermeldung kommt, sondern der Befehl erfolgreich abgeschlossen wird. Daraus folgere ich, dass Client und Server beide dürfen :-)
LOAD DATA LOCAL ...
Siehe Handbuch, Security Issues with LOAD DATA LOCAL
Es könnte jedoch sein, dass die Zeile mit \r\n abgeschlossen sind, während das Statement angibt, die Zeile sei mit \n abgeschlossen.
Freundliche Grüße
Vinzenz
Moin Moin!
die CSV-Datei liegt auch tatsächlich da, wo der SQL-Server sie sucht?
Ich würde mal raten, dass die Datei via phpMyAdmin in einem Formular hochgeladen wurde, und dass phpMyAdmin durchaus weiß, wie seine Temp-Dateien heißen. Insbesondere der Name "/tmp/phpOOqlnv" im SQL klingt sehr nach einem Upload.
Alexander