Csv, LOAD DATA INFILE, Problem Lösung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Csv, LOAD DATA INFILE, Problem Lösung

    PHP-Code:
    Fehlernummer1105

    Fehlertext
    File '.\projekt7\ImportCsv.csv' not found (Errcode2
    Ich wollte eine Csv Datei mit LOAD DATA INFILE in mysql importieren.
    Da bekam ich immer die oben genannte Fehlermeldung.

    Wenn ich die Csv Datei manuell ins Datenbank Verzeichnis projekt7 gelegt habe, dann ging Load Data infile.

    Jetzt habe ich folgendes gemacht, damit es auch immer automatisch funktioniert:

    PHP-Code:

    $NameDerDatei 
    $this->NameDerImportCsv;                     // Den Pfad und Namen angeben, von der Csv Datei
                                                                 // die importiert werden soll.
                                                                 
    $tabelle      $this->tabelle;                              // Den Tabellen Namen angeben.

    $DateiImport tempnam ("/tmp""temp");                     // Erzeugt eine Datei mit eindeutigem Dateinamen        

    $wert copy($NameDerDatei$DateiImport);                   // Die bestehende Csv Datei nach Temp kopieren

    if (!$wert) {                                                // Wenn copy Fehlerhaft war,             
        
    $this->bericht['Csv Datei temporär kopiert'] = "Fehler"// dann Fehler melden und abbrechen
        
    return false;
    }

    // Achtung -> Slasch muß anders rum, hab ich jetzt nur hier im forum so gemacht
    // weil es sonst nicht lesbar ist.                
    $DateiImport str_replace('//'"////"$DateiImport);      // Damit der query den Pfad erkennt.       

    $query "LOAD DATA INFILE '".$NameDerDatei."' 
                  REPLACE
                  INTO TABLE `"
    .$tabelle."`                  
                  FIELDS 
                      TERMINATED BY ';'   
                      ENCLOSED BY '\"'                 
                      ESCAPED BY '////' 
                  LINES TERMINATED BY '\\r\\n'"
    ;

    // Achtung -> Slasch bei escaped muß genau andersrum.
    // Hab ich da auch nur so gemacht, weil es sonst nicht lesbar ist.
                  
    $komando = new MysqlBefehl($this->_mysql);                   // Denn mysql query an die DB senden 
    $komando->query($query);
    $komando->clear();                         
    unlink($DateiImport);                                        // Temp Datei wieder löschen 
    return true
    Das ist mein Vorschlag wie man eine Datei in mysql einfügt.

    Man darf ja keine Csv Datei in das Datenbankverzeichnis verschieben.

    Wie macht man das sonst?
    Zuletzt geändert von martinm79; 31.10.2006, 15:21.
    Gut geraten ist halb gewußt.

  • #2
    Das Script (kopiert die Datei vorher und) macht doch genau das selbe, wie du zuvor manuell versucht hast oder?

    Wie hast du es denn versucht? Mit mysql auf der Kommandozeile, mit phpMyAdmin?

    Kommentar


    • #3
      Hi,
      PHP-Code:
      Fehlernummer1105

      Fehlertext
      File '.projekt7ImportCsv.csv' not found (Errcode2
      Wenn ich die Csv Datei manuell ins Datenbank Verzeichnis projekt7 gelegt habe, dann ging Load Data infile.
      Und wie genau hast Du sie vorher automatisch dort reingelegt?
      Der Fehler deutet eher darauf hin, dass Du den Pfad falsch angibst. Da fehlt ein Slash.

      LG

      Kommentar


      • #4
        Original geschrieben von onemorenerd
        Das Script (kopiert die Datei vorher und) macht doch genau das selbe, wie du zuvor manuell versucht hast oder?

        Wie hast du es denn versucht? Mit mysql auf der Kommandozeile, mit phpMyAdmin?
        Hallo,
        also ich habe es alles bis jetzt nur auf localhost getest aber es läuft.

        Um mit load date zu arbeiten, mußte ich entweder den pfad komplett zur datei angeben ober die datei manuell in db verzeichnis kopieren.

        Jetzt kopiert das Script die Datei ins temporäre Verzeichnis des Systems.

        Und den Pfad setzte ich bei load data infile ein.

        Nachdem die Datei eingelesen wurde, lösche ich sie wieder aus dem
        temporären Verzeichnis des Systems.

        Auf deine Frage, nein nicht auf Komandozeile. Und nein, nicht mit phpmyadmin. Wie gesagt, sonst nur manuell.
        Gut geraten ist halb gewußt.

        Kommentar


        • #5
          Original geschrieben von kuddeldaddeldu
          Hi,Und wie genau hast Du sie vorher automatisch dort reingelegt?
          Der Fehler deutet eher darauf hin, dass Du den Pfad falsch angibst. Da fehlt ein Slash.

          LG
          A. Rechte Maustaste....
          B. Der slash fehlt nicht, er wurde nur entfernt wo ich den beitrag
          hier rein geschrieben habe. Deswegen mußte ich auch im script
          den Pfad umdrehen, das man es lesen kann.
          Gut geraten ist halb gewußt.

          Kommentar

          Lädt...
          X