ERLEDIGT
NEIN
NEIN
ANTWORTEN
1
1
ZUGRIFFE
872
872
EMPFEHLEN
-
Hi,
hab mir gerade schon die Augen wund gelesen aber die Lösung zu meinem Problem nicht gefunden.
Ich würde gerne eine csv Datei über ein Webformular uploaden und dann via Load data infile in meine Datenbank pusten. Testhalber habe ich das ganze schon mal über das Zeilenweise auslesen der csv Datei und normalen Inserts gemacht - das ist aber nicht wirklich das richtige für mein Tool da sehr große Datenmengen hochgeladen werden...
So sieht mein Query gerade aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
// Insert the new Data into the database $QUERY_STRING = "LOAD DATA INFILE '".$FileInfo['tmp_name']."' INTO TABLE ".$this->WM_FeedTables[$FeedTable]['FeedTable']." FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n' "; genLog("import::uploadFile", $QUERY_STRING, DEBUG); $recordSet = $this->db->Execute($QUERY_STRING); if (!$recordSet) ErrorReport("cimport0200", $this->db->ErrorMsg().$QUERY_STRING, true);
Testhalber habe ich auch schon mal anstatt den Pfad zum File nur ein handle eingetragen - leider mit dem gleichen Resultat:
Code :1 2 3 4 5 6 7 8 9 10 11 12
1045: Access denied for user: 'root@%' (Using password: YES) ADOConnection._Execute(LOAD DATA INFILE 'Resource id #38' INTO TABLE wm_feed_1 ..., false) % line 889, file: adodb.inc.php ADOConnection.Execute(LOAD DATA INFILE 'Resource id #38' INTO TABLE wm_feed_1 ...) % line 73, file: class_import.inc.php
Auf den mysql Seiten habe ich zu load data infile gelesen, dass die Datei im Datenbankverzenichnis liegen muss. Das fände ich nicht wirklich spannend - ist das wirklich so gibt es einen anderen weg die Daten performant in eine Datenbank zu laden? (Am besten so, dass es nicht nur mit mysql sondern auch mit oracle geht
)
GrußJohannes Schmidt
:: http://www.schmidtjohannes.de
:: http://www.SECURITY-BLOG.EU
:: http://www.MCSEboard.de
:: http://www.ServerHowTo.de
-
Hi,
ok der Fehler war wirklich zu einfach als das ich ihn hätte gleich sehen können. Das Statement muß nicht "LOAD DATA INFILE" lauten sondern "LOAD DATA LOCAL INFILE" und schon geht alles wie es soll.
Allerdings habe ich jetzt gleich noch eine weitere Frage in dem Zusammenhang. Ich würde gerne im Query noch die Statements "ENCLOSED BY" und "ESCAPED BY" einsetzen und habe den query deshalb wie folgt aufgebaut:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13
$QUERY_STRING = "LOAD DATA LOCAL INFILE '".$FileInfo['tmp_name']."' INTO TABLE ".$this->WM_FeedTables[$FeedTable]['FeedTable']." FIELDS TERMINATED BY ',' ENCLOSED BY '\"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' ";
Leider hat mysql hier ein Problem mit dem query und meldet folgendes:
Code :1
1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 11
Schön, aber wie bekomme ich da bitte ein Anführungszeichen oder ein Backslash in den Query rein
GrußJohannes Schmidt
:: http://www.schmidtjohannes.de
:: http://www.SECURITY-BLOG.EU
:: http://www.MCSEboard.de
:: http://www.ServerHowTo.de
Ähnliche Themen
-
LOAD DATA INFILE Problem
Von Boof im Forum PHPAntworten: 3Letzter Beitrag: 18.01.11, 11:51 -
LOAD DATA INFILE semicolon-problem
Von newbe im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 20.09.10, 12:33 -
load data local infile
Von al-Maghribi im Forum Relationale DatenbanksystemeAntworten: 9Letzter Beitrag: 09.04.08, 16:17 -
MySQL Load Data Infile
Von JensG im Forum Relationale DatenbanksystemeAntworten: 1Letzter Beitrag: 25.11.05, 11:27 -
(MySql) load data infile... ohne PK ?
Von Deletemaster im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 16.02.05, 12:20





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren