У меня есть база данных на сервере с 120 таблицами.
Я хочу клонировать всю базу данных с новым именем базы данных и скопированными данными.
Существует ли эффективный способ сделать это
$ mysqldump yourFirstDatabase -u user -ppassword > yourDatabase.sql $ mysql yourSecondDatabase -u user -ppassword < yourDatabase.sql
mysqldump -u <user> --password=<password> <DATABASE_NAME> | mysql -u <user> --password=<password> -h <hostname> <DATABASE_NAME_NEW>
Как принятый ответ, но без .sql файлов:
mysqldump sourcedb -u <USERNAME> -p<PASS> | mysql destdb -u <USERNAME> -p<PASS>
Если вы используете phpMyAdmin
Существует инструмент mysqldbcopy из пакета утилит MySQLhttp://dev.mysql.com/doc/mysql-utilities/1.3/en/mysqldbcopy.html
$newdb = (date('Y')-1); $mysqli->query("DROP DATABASE `".$newdb."`;"); $mysqli->query("CREATE DATABASE `".$newdb."`;"); $query = " SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE 'rds' "; $result = $mysqli->query($query)->fetch_all(MYSQLI_ASSOC); foreach($result as $val) { echo $val['TABLE_NAME'].PHP_EOL; $mysqli->query("CREATE TABLE `".$newdb."`.`".$val['TABLE_NAME']."` LIKE rds.`".$val['TABLE_NAME']."`"); $mysqli->query("INSERT `".$newdb."`.`".$val['TABLE_NAME']."` SELECT * FROM rds.`".$val['TABLE_NAME']."`"); }