使用MySQL语句实现批量改表名或表前缀

因为网站搬迁,数据转换需要用到批量修改MySQL中表名前缀,查找了相应的方法,以做记录。

MySQL中,单独更改某个表名或者表前缀的语句是:

1
ALTER TABLE `old_xxxxx` RENAME TO `new_xxxxx`;

这样就完成了对某个表修改前缀的方法,那么如果要批量修改表名,就需要执行多次上述语句。解决该问题的思路是:利用SQL获取需要修改的表名,然后使用拼接字符串函数,拼接出修改所有表的每一条SQL语句,将得到的这些语句复制出来后,再执行,即可完成批量改表名的工作

首先执行以下语句生成

1
2
3
SELECT CONCAT('ALTER TABLE ',table_name,' RENAME TO new',substring(table_name,4),';')
FROM in information_schema.tables
WHERE table_name LIKE 'old_%'

这样就会得到类似以下的结果

1
2
3
ALTER TABLE old_xxxxx RENAME TO new_xxxxx;
ALTER TABLE old_yyyyy RENAME TO new_yyyyy;
ALTER TABLE old_zzzzz RENAME TO new_zzzzz;

此时复制这些结果,在MySQL进行执行,即可完成批量改表名

坚持原创技术分享,您的支持将鼓励我继续创作!