sql Datei in Datenbank einslen
philippo
- php
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
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
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
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
Hi,
Vielleicht hilfts dir weiter.
Genau das isses. Eine Zeile geändert und es geht 1a!
Frohe Weihnachten!
Gruß
philippo
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®
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
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®