LOAD DATA INFILE -> File auswählen

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

  • LOAD DATA INFILE -> File auswählen

    Hallo,

    habe ein kleines Problem.
    Möchte eine csv.Datei nach SQl importieren.
    An sich kein Problem, möchte diese Datei aber vorher über "browse" bestimmen.
    Hab mir das so gedacht:

    PHP-Code:
    <form action="import2.php" method="post" >
        <
    table cellpadding="5" border="2">
        <
    tr>
            <
    td>Datei</td>
            <
    td colspan="2"><input type="file" name="textfile" /></td>
        </
    tr>
        <
    input type="submit" name="file" value="Abschicken" />
    </
    form
    Hierdrüber bestimme ich wo die Datei liegt und packe den Pfad in die Variable "textfile".
    Wenn ich das nun abschicke wird folgendes aufgerufen:

    PHP-Code:
    include ('dbconnect.php');
    $sql "    LOAD DATA LOCAL INFILE '$textfile' IGNORE
                INTO TABLE platten 
                FIELDS TERMINATED BY ';'
                ENCLOSED BY '\"' 
                ESCAPED BY '\\\' 
                LINES TERMINATED BY '\r\n'"
    ;
               
    $result mysql_query($sql);
               echo  
    mysql_error();
               echo 
    $result
    Eigentlich sollte nun die Datei in die Tabelle eingetragen werden, aber wenns so wäre, müsste ich euch net fragen

    Folgender Fehler kommt:
    Can't get stat of 'C:\Dokumente und Einstellungen\name\Desktop\platten.csv' (Errcode: 2).

    Ich schätze mal er öffnet die Datei einfach nicht, aber wie kann ich machen, das ich den Pfad eingeben kann und er dann die dort liegende Datei importiert?

    Gruß
    Dennis

  • #2
    1. <form benötigt noch enctype="multipart/form-data"
    2. Zum Thema Upload-Probleme schau dir mal das hier an
    3. wenn du mysql 4 benutzt schau dir auch mal
    das hier an

    peter
    Zuletzt geändert von Kropff; 04.11.2004, 15:14.
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      Hallo,

      erstmal Danke für die schnelle Antwort.

      Habe es dementsprechend geändert, bekomme aber nun folgende Fehlermeldung:

      The file '/tmp/php_xrKUb' must be in the database directory or be readable by all

      Keine Ahnung was zu tun ist

      Gruß
      Dennis

      Kommentar


      • #4
        Original geschrieben von Mannis
        Keine Ahnung was zu tun ist
        dann solltest du vielleicht die meldung erst mal übersetzen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          @Mannis

          PHP-Code:
          print_r($_FILES); 
          !!!!!

          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Hallo,

            danke für die Antworten.

            War ein bissel krank, kann mich daher erst jetzt wieder mit dem Thema beschäftigen.

            Habe den Tip von Peter eingebaut, steht nun print_r($_FILES); drin, nun kommt folgende Fehlermeldung:

            The file '/tmp/phpUrxL7a' must be in the database directory or be readable by allArray ( [textfile] => Array ( [name] => AG-Liste bielefeld 19.10.2004.csv [type] => application/octet-stream [tmp_name] => /tmp/phpUrxL7a [error] => 0 [size] => 109130 ) )

            Ich weiss damit nix anzufangen.
            Ich habe mehrmals gelesen, das ich eine bestimmte Berechtigung brauche um eine Datei zu importieren, da die zu importierende Datei irgendwo zwischengespeichert wird. Aber habe ich nicht automatisch alle Berechtigungen?

            Gruß
            Dennis

            Kommentar


            • #7
              Original geschrieben von Mannis
              folgende Fehlermeldung:

              The file '/tmp/phpUrxL7a' [color=red]must be in the database directory [/color]or be readable by allArray ( [textfile] => Array ( [name] => AG-Liste bielefeld 19.10.2004.csv [type] => application/octet-stream [tmp_name] => /tmp/phpUrxL7a [error] => 0 [size] => 109130 ) )
              lese die Fehlermeldung richtig

              Kommentar


              • #8
                Hallo,

                das habe ich mir auch schon gedacht, aber durch die Abfrage vorher habe ich die Datei doch geladen oder nicht?

                Ich will ja eine csv-datei benutzen, die vom client gelesen wird.

                PHP-Code:
                </html>
                <
                form enctype="multipart/form-data" action="import2.php" method="post" >
                    <
                table cellpadding="5" border="2">
                    <
                tr>
                        <
                td>Datei</td>
                        <
                td colspan="2"><input type="file" name="textfile" /></td>
                    </
                tr>
                    <
                input type="submit" name="file" value="Abschicken" />
                </
                form
                Hierrüber soll ja die Datei eingelesen werden, klappt das nicht? Die ausgewählte Datei wird dann ja in die Variable textfile gepackt. Die Variable wird dann in der php-Abfrage benutzt, daher eigentlich der Zusatz "local" in der PHP-Abfrage. Soweit ich gelesen habe wird durch "local" eine Datei auf dem Client angesprochen, nicht auf dem Server.

                Habe ich mich da vertan?

                Gruß
                Dennis

                Kommentar


                • #9
                  übersetze mal die rot markierte Fehlermeldung, was sagt sie aus?

                  Kommentar


                  • #10
                    Hallo,

                    es ist mir schon klar das da steht das das File im Datenbankverzeichnis sein muss *grml*

                    Aber daraus ergab sich ja meine Frage. Wenn ich das Attribut "local" benutze, kann ich diese erforderte Datei vom Client aus benutzen, so habe ich es zumindest verstanden.

                    So steht es auf mysql.com:
                    Wenn das LOCAL-Schlüsselwort angegeben wird, wird die Datei vom Client-Host gelesen. Wenn LOCAL nicht angegeben wird, muss die Datei auf dem Server liegen.

                    Daher verstehe ich nicht warum sie im Datenbankverzeichnis liegen muss.

                    Gruß
                    Dennis

                    Kommentar


                    • #11
                      das gilt höchsten für LAN; über Internet bzw. Browser no way. Oder hättest du denn gern, dass irgendeine Website auf deine Festplatte zugreifen darf?

                      Kommentar


                      • #12
                        Hallo,

                        stimmt natürlich.

                        Auf die dafür bestimmte Webseite kommen eh nur Leute die das Recht haben den Inhalt der Datenbank zu ändern. Geregelt ist das durch Passwort etc.

                        Wie machen ich es denn jetzt für die am komfortabelsten möglich eine csv-Datei in die Datenbank zu importieren, ohne das sie auf phpmyadmin zugreifen müssen?

                        Also über eine von mir geschriebene Webseite, gibt es da eine andere Möglichkeit? Sie sollen eine csv-datei von Ihrere Festplatte aufrufen können und dann in die SQL-Datenbank einfügen können.

                        Gruß
                        Dennis

                        Kommentar


                        • #13
                          in dem du die hochgeladene Datei in das Datenbankverzeichnis reinschiebst und so, wie du schon versucht hast, importieren.

                          Kommentar


                          • #14
                            Hallo,

                            hat geklappt, danke für die Hilfe.

                            Gruß
                            Dennis

                            Kommentar


                            • #15
                              Can't get stat of '...'

                              Hallo an alle,

                              wie wird das Problem mit der Fehlermeldung denn nun gelöst? Der User hat doch eigentlich gar nicht das Recht, eine Datei in das MySql-Verzeichnis zu kopieren. Außerdem sagt die Dokumentation doch auch, dass sich die Datei "nur" auf dem selben Rechner befinden und Leserecht für alle haben muss, damit es funktioniert.

                              Mein MySql-User hat File-Privileg, Select-Privileg, Insert-Privileg
                              Die CSV-Datei hat Leserecht für alle


                              Trotzdem bekomme ich weiterhin die Fehlermeldung
                              Can't get stat of '/pfad.../daten.csv

                              nach Ausführung des Befehls mittels PHP
                              LOAD DATA INFILE '/.../daten.csv' INTO TABLE `tabname` IGNORE 1 LINES

                              Weiß an der Stelle jemand weiter?

                              Danke
                              René
                              Zuletzt geändert von Teinze; 22.12.2004, 11:26.

                              Kommentar

                              Lädt...
                              X