"Dump" in mysql inmportieren

Microhome

Erfahrenes Mitglied
"Dump" in mysql importieren

Hallo liebe Community,
ich bin gerade dabei in kleines Tool zu proggen. Wichtig ist es, dass die Installation von diesem übersichtlich und einfach gestaltet wird, Daher möchte ich beim Anlegen der mysql Tabellen die Inhalte aus einer einzigen mysql "dump" datei fetchen und wie ich herausgefunden habe, diese dann zeile für zeile in mysql importieren. Ich weiß, dass es da Tools wie phpmyadmin, bigdump oder auch den Befehl "LOAD DATA INFILE" gibt. phpmyadmin und bigdump kann ich nicht werden, weil das ganze ja ein install-script werden soll und letzteres setzt wiederum voraus, dass der user entsprechende Rechte auf die Datenbank gesetzt haben muss. Ich suche also ein Script, dass die mysql-datei (z.B. sql.txt) zeile für zeile ausliest und ausführt. Klar ginge das auch mit system('mysql..'), aber das setzt ja auch wieder voraus, dass der User auf Systembefehle zugreifen darf. Das ganze soll ganz einfach per PHP geschehen. Habt ihr da Ideen oder bereits eigene einfache Scripte?


Vielen Dank für eure Hilfe
 
Zuletzt bearbeitet:
Hi!

Guck dir mal phpMyAdmin an. Darin gibt es eine Datei, die einen Dump auseinandernimmt. (ACHTUNG: Nicht Zeilenumbrüche sind Trenner, sondern Semikoli! Und die Semikoli dürfen auch nicht in einem String stehen!)

Oder musst darauf achten, dass wirklich pro Zeile ein MySQL-Befehl steht.

Mamphil
 
Ich verstehe nicht wo dein Problem liegt. Der User muß beim installieren seinen Mysql Zugangsdaten eingeben damit dein Skript die Tabellen und Einträge abarbeiten bzw. anlegen kann.

Wenn der User die Daten eingegeben hat, connectest du einfach auf seine DB
und führst die SQL Abfrage aus, welche du am besten in eine externe Datei
speicherst.

Alle gängigen Installer welche ich kenne funktionieren so ...

mfg
 
Re: "Dump" in mysql importieren

Ich habe eine externe Datei, bspw. create.sql.
In dieser sollen die SQL Befehle stehen, also so, wie sie bspw. bei phpMyAdmin beim Exportieren rauskommen. Und genau das möchte ich per PHP (!) wieder importieren. DB, User & Password stehen ja schon inner Config (wurde vorher alles druch das Installscript gemacht, an dem ich schreibe). Nun gehts nur noch darum die Datenbanken anzulegen und mit Dtandarddaten zu füllen (aber eben aus einem externen Dump-File).
 
Zuletzt bearbeitet:
selbst was probiert

so, ich habe jetzt mal ein bisschen selbst nachgedacht und per folgendem Code die Datei create.sql eingelesen und ausgeführt.
Code:
$con = mysql_connect ($kDBhost, $kDBuser, $kDBpwd);
mysql_select_db($kDBdb, $con);

$fd = fopen("sql/create.sql", "r");
while (!feof($fd)){
	$zeile .= fgets($fd,1000);
}
$todo = ereg_replace("\n", "", $zeile);
echo "$todo<br>";
mysql_query($todo);
die(mysql_error());
fclose ($fd);

Es ergibt sich folgender mySQL Syntax:
Code:
CREATE TABLE `settings` ( `id` INT NOT NULL AUTO_INCREMENT , `minstunden` INT NOT NULL , `maxstunden` INT NOT NULL , PRIMARY KEY ( `id` ) ); CREATE TABLE `faecher` ( `id` INT NOT NULL AUTO_INCREMENT , `fach` TEXT NOT NULL , `anzahl` INT NOT NULL , `pflicht` INT NOT NULL , PRIMARY KEY ( `id` ) ); CREATE TABLE `schueler` ( `id` INT NOT NULL AUTO_INCREMENT , `name` TEXT NOT NULL , `klasse` INT NOT NULL , `wahl` INT NOT NULL , PRIMARY KEY ( `id` ) );

Die Datei create.sql schaut wie folgt aus:
Code:
CREATE TABLE `settings` (
`id` INT NOT NULL AUTO_INCREMENT ,
`minstunden` INT NOT NULL ,
`maxstunden` INT NOT NULL ,
PRIMARY KEY ( `id` )
);

CREATE TABLE `faecher` (
`id` INT NOT NULL AUTO_INCREMENT ,
`fach` TEXT NOT NULL ,
`anzahl` INT NOT NULL ,
`pflicht` INT NOT NULL ,
PRIMARY KEY ( `id` )
);

CREATE TABLE `schueler` (
`id` INT NOT NULL AUTO_INCREMENT ,
`name` TEXT NOT NULL ,
`klasse` INT NOT NULL ,
`wahl` INT NOT NULL ,
PRIMARY KEY ( `id` )
);

Jedoch ergibts sich folgender Fehler beim mysql_query Befehl:
Fehler in der Syntax bei '; CREATE TABLE `faecher` ( `id` INT NOT NULL AUTO_INCREMENT , `' in Zeile 1.

Wenn ich den Code per SQL Feld über phpmyadmin Ausführe funktioniert er.


Was mache ich falsch?
 
Zuletzt bearbeitet:
Zurück