philippo: sql Datei in Datenbank einslen

Hallo

wie kann ich eine .sql Datei in eine MySQL Datenbank (aus einem PHP Scrtip) einfügen!? Die sql Datei liegt im selben Verzeichnis aufm Server..

Gruß
philippo

  1. Hallo,

    mir ist keine andere Möglichkeit bekannt, als die Datei zunächst mittels file_get_contents() auszulesen, und den resultierenden String als Query auszuführen.

    Bsp: mysql_query(file_get_contents('query.sql'));

    Lass mich aber auch gern verbessern ;)

    Viele Grüße
    Patrick

    --
    "Though this be madness, yet there's method in't."
    sh:( fo:| ch:? rl:( br:^ n4:( ie:{ mo:) va:} de:> zu:) fl:| js:( ss:| ls:[
    1. Moin.

      dabei macht er leider immer nach dem wenn z.B zwei mla Create Table auftaucht nahc dem ersten Schluss und meckert:

      "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 '; CREATE TABLE mujecms\_main ( id int(11) NOT NULL auto_increment, `' at line 16"

      Gruß
      Philippo

      1. Hallo,

        ja, das ist wohl wahr. Soweit hab ich auf die Schnelle nicht gedacht *duck*

        Hab nochmal etwas gesucht und bin auf folgendes gestossen: PHP Manual. Vielleicht hilfts dir weiter.

        Viele Grüße
        Patrick

        --
        "Though this be madness, yet there's method in't."
        sh:( fo:| ch:? rl:( br:^ n4:( ie:{ mo:) va:} de:> zu:) fl:| js:( ss:| ls:[
        1. Hi,

          Vielleicht hilfts dir weiter.

          Genau das isses. Eine Zeile geändert und es geht 1a!

          Frohe Weihnachten!

          Gruß
          philippo

  2. Moin!

    Hallo

    wie kann ich eine .sql Datei in eine MySQL Datenbank (aus einem PHP Scrtip) einfügen!? Die sql Datei liegt im selben Verzeichnis aufm Server..

    Das ist einfach. :) Der mysql-Client sollte allerdings auf dem system vorhanden sein.

      
    <?php  
    $strAusgabe = `mysql -h hostname -u benutzername --password geHeim datenbankname < backup.sql` or die "Da ging was daneben...";  
    echo "<pre>$strAusgabe</pre>";  
    ?>  
    
    

    Es handelt sich tatsächlich um backticks, nicht um Hochkommas.
    hostname, benutzername, password, datenbankname ersteze durch die gültigen Werte, das kann bei hostname auch eine IP sein. Ist Webserver und Datenbankserver der gleiche Host, dann trage 127.0.0.1 ein.

    Sollte das in der PHP.ini gesetzte Zeitlimit überschritten werden:

      
    <?php  
    $strAusgabe = `mysql -h hostname -u benutzername --password geHeim datenbankname < backup.sql > mysqlexec.log 2> error.log &` or die "Da ging was daneben...";  
    ?>  
    
    

    Damit hängst Du den Prozess von der Shell (Dein PHP-Skript...) ab und schaust Dir später die Logfiles mysqlexec.log und error.log an.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Hallo Freunde des gehobenen Forumsgenusses,

      Sollte das in der PHP.ini gesetzte Zeitlimit überschritten werden:

      AFAIK wird da nur die Rechenzeit des Scriptes berechnet, also nicht solche Sachen wie mysql_connect, fsockopen, Backticks etc.

      Gruß
      Alexander Brock

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. Moin!

        AFAIK wird da nur die Rechenzeit des Scriptes berechnet, also nicht solche Sachen wie mysql_connect, fsockopen, Backticks etc.

        http://de.php.net/ref.info (so etwa am Ende des ersten Viertels der Seite) gibt Dir recht. Bleibt zwar der "TimeOut" / "CGI timeout" des Servers, der auf das Skript wartet... jedoch werden die auch nicht in der PHP.ini gesetzt. Also behältst Du sogar Recht.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development