MySQL - Datenbanken kopieren, duplizieren
In einem meiner vorigen Artikel habe ich beschrieben, wie man mit mysqldump MySQL - Datenbanken von Server zu Server kopieren kann.
Es kommt jedoch auch oft vor, dass man eine MySQL - Datenbank duplizieren, sprich eine Kopie auf dem gleichen Server erstellen möchte.
Dies kann zum Beispiel der Fall sein, wenn man eine Änderung und/oder ein Script testen -dazu aber nicht die Hauptdatenbank verwenden möchte. Es gibt leider keinen direkten Befehl um eine Datenbank zu duplizieren, daher muss man leider den Umweg über, zum Beispiel, ein PHP-Script gehen.
Hier stelle ich ein PHP-Script vor, welches es ermöglicht, eine Kopie einer MySQL - Datenbank zu erstellen…
<?php //Mit Datenbank-Server verbinden if ( ($db_handle = mysql_connect('SERVER', 'BENUTZER_NAME', 'PASSWORD')) === false) { die(mysql_error()); } //Quell-Datenbank $database_source = 'datenbank'; //Ziel-Datenbank $database_target = 'datenbank_kopie'; //Ziel-Datenbank erstellen $sql = "CREATE database ".$database_target; $query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle)); //Tabellen der Quell-Datenbank auslesen $sql = "SHOW TABLES FROM ".$database_source; $query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle)); $num_tables = mysql_num_rows($query); for($i = 0; $i < $num_tables; $i++) { //Name der Tabelle $table_name = mysql_result($query, $i); //Query zur Erstellung der Tabelle auslesen $sql = "SHOW CREATE TABLE ".$database_source.".".$table_name; $sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle)); $sub_query_data_arr = mysql_fetch_row($sub_query); //Query zur Erstellung der neuen Tabelle konstruieren $sql = str_replace("`".$table_name."`",$database_target.".".$table_name, $sub_query_data_arr[1]); //Tabelle in Ziel-Datenbank erstellen $sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle)); //Daten Einfügen $sql = "INSERT INTO ".$database_target.".".$table_name." SELECT * FROM ".$database_source.".".$table_name; $sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle)); } //Fertig mysql_close($db_handle); ?> |
Falls Ihnen dieses Script gefällt, und Sie es auf Ihrer Webseite einsetzen, so würde ich mich über einen Backlink zu meinem Blog freuen
danke für das skript aber bei // Daten Einfügen — $sub_query steht 2x “or”
korrekt:
$sub_query = mysql_query($sql, $db_handle) or die(mysql_error($db_handle));
Danke für den Hinweis!
Ich habe den Fehler soeben behoben!