一、原则:
只迁移表结构和数据,存储过程、函数、触发器尽量自己改写,并充分测试。
迁移前,先设置好数据库的一些参数,比如默认存储引擎,默认编码等,方便后续导入。
二、方法:
1、使用MySQL Workbench
MySQL Workbench提供了Migration Wizard(数据库迁移)功能,支持MSSQL的数据形式转换为MYSQL下的数据格式;
具体参照这篇文章:http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/
如果有Not enough memory to allocate insert buffer of size 1073741824,请行Google解决。可能是MySQL端max_allowed_packet、key_buffer_size大小设置的问题。
博主的解决办法是,在windows机器新建一个MySQL数据库,作为中间导入库。然后再在两个MySQL库间同步数据。
注意:
1)看日志文件wb.log的报错,复制结果以这个日志为准。
2)source RMBMS 连接参数,Server填打开SSMS后,服务器属性后面那个名称(常规-名称)。
2、使用Navicat Premium -- 本人推荐
Navicate 提供了数据传输的功能,可以作为中间操作节点,将一个数据库复制到另一个库。
操作简单,常规界面选择要同步的库和表,高级界面去掉创建索引、勾上遇到错误继续、其他基本默认即可。
完成后注意看日志,如果有报错没有复制数据,请重新同步一下这些表,并在高级里勾上使用完整插入语句,
这样我们在日志里,可以看到SQL语句,手动执行插入和调试错误即可。有表没同步,请手动建表。
三、后续操作:
1、手动改写存储过程、函数和触发器,并要经过程序充分测试检验。
2、根据业务需求,添加合适的索引。
附:另外靠谱的两种方法:https://www.percona.com/blog/2016/06/23/migrate-from-ms-sql-server-to-mysql/