tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
1
ZUGRIFFE
872
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    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ß
     

  2. #2
    südpol südpol ist offline Mitglied Brokat
    Registriert seit
    Apr 2003
    Ort
    London (UK)
    Beiträge
    253
    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ß
     

Ähnliche Themen

  1. LOAD DATA INFILE Problem
    Von Boof im Forum PHP
    Antworten: 3
    Letzter Beitrag: 18.01.11, 11:51
  2. LOAD DATA INFILE semicolon-problem
    Von newbe im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 20.09.10, 12:33
  3. load data local infile
    Von al-Maghribi im Forum Relationale Datenbanksysteme
    Antworten: 9
    Letzter Beitrag: 09.04.08, 16:17
  4. MySQL Load Data Infile
    Von JensG im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 25.11.05, 11:27
  5. (MySql) load data infile... ohne PK ?
    Von Deletemaster im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 16.02.05, 12:20