Sie können SQL verwenden, um ein SQL-Skript zu erstellen, das jede Tabelle in Ihrer Quelldatenbank in die Zieldatenbank überträgt.
Sie müssen die Zieldatenbank erstellen, bevor Sie das aus dem Befehl generierte Skript ausführen.
Sie können eines der beiden Skripte verwenden (ich hatte ursprünglich ersteres vorgeschlagen, aber jemand hat meine Antwort dahingehend "verbessert", dass ich nun GROUP_CONCAT
. Sie haben die Wahl, aber ich bevorzuge das Original):
SELECT CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name, '; ')
FROM information_schema.TABLES
WHERE table_schema='$1';
ou
SELECT GROUP_CONCAT('RENAME TABLE $1.', table_name, ' TO $2.', table_name SEPARATOR '; ')
FROM information_schema.TABLES
WHERE table_schema='$1';
($1 und $2 sind Quelle bzw. Ziel)
Dadurch wird ein SQL-Befehl generiert, den Sie anschließend ausführen müssen.
Beachten Sie, dass GROUP_CONCAT
hat eine Standardlängenbegrenzung, die bei Datenbanken mit einer großen Anzahl von Tabellen überschritten werden kann. Sie können diese Grenze ändern, indem Sie SET SESSION group_concat_max_len = 100000000;
(oder eine andere große Zahl).
5 Stimmen
Auch bei Serverfault: serverfault.com/questions/195221/how-to-rename-a-mysql-database
7 Stimmen
Diese Anweisung RENAME DATABASE Syntax wurde in MySQL 5.1.7 hinzugefügt, wurde aber als gefährlich eingestuft und in MySQL 5.1.23 entfernt.
18 Stimmen
Hoffentlich wird MySQL eine neue, funktionierende
RENAME DATABASE
Anweisung, die keine Gefahren birgt, da es derzeit keine einfache Möglichkeit gibt, diese Aufgabe zu erledigen. Es gibt keinen offensichtlichen Grund, warum es in der Vergangenheit gefährlich war. Dokumentation Sie sollten also in der Lage sein, Ersatz zu beschaffen. Wenigstens haben die Leute auf ihrer Website Fehler in den Funktionsanforderungen angegeben. Zum Beispiel, bugs.mysql.com/fehler.php?id=58593 y bugs.mysql.com/fehler.php?id=1698 .0 Stimmen
Links sind jetzt kaputt...