文章标题:
利用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的表都是瞬间完成,这是借助了文件系统的硬链接特性,目标库中的数据文件是物理存在的文件,并非软链接
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...