1.RENAMEDATABASEdb_nameTOnew_db_name
这个。。这个语法在mysql5.1.7中被添加进来,到了5.1.23又去掉了。
据说有可能丢失数据。还是不要用的好。
详见:http://dev.mysql.com/doc/refman/5.1/en/rename-database.html
2.如果所有表都是MyISAM类型的话,可以改文件夹的名字
关闭mysqld
把data目录中的db_name目录重命名为new_db_name
开启mysqld
3.重命名所有的表
代码如下:
CREATEDATABASEnew_db_name;
RENAMETABLEdb_name.table1TOnew_db_name.table1,
db_name.table2TOnew_db_name.table2;
DROPDATABASEdb_name;
4.mysqldump导出数据再导入
代码如下:
mysqldump-uxxxx-pxxxx-hxxxxdb_name>db_name_dump.SQL
mysql-uxxxx-pxxxx-hxxxx-e“CREATEDATABASEnew_db_name”
mysql-uxxxx-pxxxx-hxxxxnew_db_name<db_name_dump.SQL
mysql-uxxxx-pxxxx-hxxxx-e“DROPDATABASEdb_name”
5.使用shell脚本重命名所有的表
代码如下:
#!/bin/bash
mysqlconn=”mysql-uxxxx-pxxxx-S/var/lib/mysql/mysql.sock-hlocalhost”
olddb=”db_name”
newdb=”new_db_name”
#$mysqlconn-e“CREATEDATABASE$newdb”
params=$($mysqlconn-N-e“SELECTTABLE_NAMEFROMINFORMATION_SCHEMA.TABLESWHEREtable_schema='$olddb'”)
fornamein$params;do
$mysqlconn-e“RENAMETABLE$olddb.$nameto$newdb.$name”;
done;
#$mysqlconn-e“DROPDATABASE$olddb”
就是方法3的优化版。
|