Andreas: LOAD DATA INFILE - wie mach ich das mit PHP?

Hallo!
Kann mir jemand sagen wie bzw. ob man den mysql-Befehl  oder Funktion oder wie auch imme rman das nennt, jedenfalls wie man das aus PHP verwendet?
Danke!

Grüße
Andreas

  1. Hallo Andreas,

    Kann mir jemand sagen wie bzw. ob man den mysql-Befehl  oder Funktion oder wie auch imme rman das nennt, jedenfalls wie man das aus PHP verwendet?

    Ganz normal mit myasql_query. Beim Namen der zu importierenden Datei sucht MySQL zuerst in seinem Data-Verzeichnis, wenn kein absoluter Pfad angegeben ist. Das einzige Problem mit der Benutung von LOAD DATA ist deswegen, daß es bei den meisten Hostern nicht funktioniert, weil die extra Datenbankserver haben, auf die man dann natürlich seine Datei nicht hochladen kann.
    Wenn das bei Dir nicht der Fall ist, muß nur noch der Webserver entsprechende Rechte für die zu importierende Datei haben.

    Viele Grüße
    Stephan

    1. Hi!
      Also ich habe mal mit system() Mysqldump direkt ausgeführt und genau so eine Datei geschrieben, bzw. auch mal improtiert. Also sollte das gehen. Außerdem greife ich über localhost auf die db zu, solte wohl gehen, denke ich. Aber wenn ich das so probiere, funktioniert es nicht

      $query =  "LOAD DATA INFILE 'blz.txt' INTO TABLE blz FIELDS TERMINATED BY ';'";
      $res = mysql_query($query, $m_link);
       if (!$res){ echo mysql_error();}

      Fehler:  Warning: Supplied argument is not a valid MySQL-Link resource in infile.php on line 35

      Die Zeile 35 ist: $res = mysql_query($query, $m_link);

      Was anderes, warum kommt keine mysql Fehlermeldung? Was habe ich daran denn falsch gemacht?

      Grüße
      Andreas

      1. Hallo Andreas,

        Fehler:  Warning: Supplied argument is not a valid MySQL-Link resource in infile.php on line 35

        Die Zeile 35 ist: $res = mysql_query($query, $m_link);

        Was anderes, warum kommt keine mysql Fehlermeldung? Was habe ich daran denn falsch gemacht?

        Der Fehler heißt, daß $m_link keine gültige MySQL-Verbindung ist, Dein mysql_connect müßte also fehlgeschlagen sein. Da Du damit keine Verbindung zum MySQL-Server hast, kann er Dir auch keine Fehlermeldung zurückliefern.

        Viele Grüße
        Stephan

        1. Hi!

          Der Fehler heißt, daß $m_link keine gültige MySQL-Verbindung ist, Dein mysql_connect müßte also fehlgeschlagen sein. Da Du damit keine Verbindung zum MySQL-Server hast, kann er Dir auch keine Fehlermeldung zurückliefern.

          Hattest Recht... Sachen gibts.... :-) Als jetzt kommt das nächste Problem:

          Access denied for user: 'blablabla@localhost' (Using password: YES)

          Was heißt das jetzt? Geht darum eine 4 MB große csv-Datei in die DB einzulesen.

          Wenn ich an Stelle von "LOAD DATA..." einfach nur "SELECT * FROM blz" schreibe, klappt alles, also sollte ich doch zugriff haben, oder? Was soll das dann?
          Grüße
          Andreas

          1. Hi!
            So, bin wieder etwas weiter:

            Habe noch LOCAL eingefügt, dann gehts schonmal etwas weiter, aber angeblich  ist noch ein Fehler in der syntax? Verstehe ich nicht, die Query sieht so aus:

            $query =  "
                   LOAD DATA INFILE
                   LOCAL
                   'blz.txt'
                   INTO TABLE
                   blz
                   FIELDS TERMINATED BY ';'";

            Der Fehler:
            You have an error in your SQL syntax near 'LOCAL 'blz.txt' INTO TABLE blz FIELDS TERMINATED BY ';'' at line 3

            Und jetzt? Die Datei blz.txt ist im selben Verzeichnis wie die PHP Datei.

            Grüße
            Andreas