Maison > Questions et réponses > le corps du texte
P粉6620895212023-08-24 11:11:03
Utilisez ces quelques commandes simples :
mysqldump -u username -p -v olddatabase > olddbdump.sql mysqladmin -u username -p create newdatabase mysql -u username -p newdatabase < olddbdump.sql
Ou pour réduire les E/S, utilisez ce qui suit comme suggéré par @Pablo Marin-Garcia :
mysqladmin -u username -p create newdatabase mysqldump -u username -v olddatabase -p | mysql -u username -p -D newdatabase
P粉9491909722023-08-24 10:59:25
Pour InnoDB, ce qui suit semble fonctionner : créez une nouvelle base de données vide, puis renommez chaque table tour à tour en la nouvelle base de données :
RENAME TABLE old_db.table TO new_db.table;
Vous devrez ensuite ajuster les autorisations.
Pour écrire des scripts dans le shell, vous pouvez utiliser l'une des méthodes suivantes :
mysql -u username -ppassword old_db -sNe 'show tables' | while read table; \ do mysql -u username -ppassword -sNe "rename table old_db.$table to new_db.$table"; done
ou
for table in `mysql -u root -ppassword -s -N -e "use old_db;show tables from old_db;"`; do mysql -u root -ppassword -s -N -e "use old_db;rename table old_db.$table to new_db.$table;"; done;
Remarque :
-p
和密码之间没有空格。如果您的数据库没有密码,请删除 -u username -ppassword
. Si une table a des déclencheurs, elle ne peut pas être déplacée vers une autre base de données en utilisant la méthode ci-dessus (cela entraînera une 触发器错误架构
erreur). Si tel est le cas, clonez la base de données en utilisant les méthodes traditionnelles puis supprimez l'ancienne base de données :
<代码>mysqldump old_db | mysql new_db
Si vous avez des procédures stockées, vous pouvez ensuite les copier :
<代码>mysqldump -R old_db | mysql new_db