借助MySQL rename命令实现数据库重命名的间接途径

3周前发布 gsjqwyl
16 0 0

文章标题:

利用MySQL rename命令实现数据库重命名的迂回之法

文章内容:实际上MySQL并没有原生支持直接重命名数据库(更改数据库文件路径也不行),所以得通过间接的方式来达成,这里采用rename的手段,把表从一个库“迁移”到另一个库。下面的代码就可以把db01库下的表“迁移”到db02库中。

SELECT CONCAT('rename table db01.',table_name,' to db02.',TABLE_NAME,';') AS rename_table
FROM information_schema.`TABLES` WHERE table_schema = 'db01';
--output
rename table db01.t2 to db02.t2;
rename table db01.test_table to db02.test_table;
rename table db01.TestTable01 to db02.TestTable01;

1,当执行rename table操作时,会将表的结构以及数据文件一同转移到目标库中,同时从源库中移除,这类似于Windows系统里文件的“剪切”操作,所以是间接实现数据库重命名的方式
2,rename的执行是瞬时的,无论表的大小如何,1MB的表和100GB的表都是瞬间完成,这是借助了文件系统的硬链接特性,目标库中的数据文件是物理存在的文件,并非软链接

© 版权声明

相关文章

暂无评论

暂无评论...