合 SQL Server 迁移到 MySQL 的方法
Tags: 数据迁移
若是少量的表数据迁移,那么可以使用SQLyog、Navicat、MySQL Workbench或MSSQL2SQL等工具直接进行迁移。
Navicate提供了数据传输的功能,可以作为中间操作节点,将一个数据库复制到另一个库。操作简单,常规界面选择要同步的库和表,高级界面去掉创建索引、勾上遇到错误继续、其他基本默认即可。完成后注意看日志,如果有报错没有复制数据,请重新同步一下这些表,并在高级里勾上使用完整插入语句,这样我们在日志里,可以看到SQL语句,手动执行插入和调试错误即可。有表没同步,请手动建表。
MySQL Workbench提供了Migration Wizard(数据库迁移)功能,具体操作过程可以参考: https://dev.mysql.com/doc/workbench/en/wb-migration-wizard-connection.html
对于SQL Server的存储过程、函数和触发器等对象,需要自己手工进行改写,并充分测试才能进行迁移,否则迁移完成后会出现很多未知的问题。
一、原则:
只迁移表结构和数据,存储过程、函数、触发器尽量自己改写,并充分测试。
迁移前,先设置好数据库的一些参数,比如默认存储引擎,默认编码等,方便后续导入。
二、方法:
1、使用MySQL Workbench
MySQL Workbench提供了Migration Wizard(数据库迁移)功能,支持MSSQL的数据形式转换为MYSQL下的数据格式;
如果有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/
打开MySQL Workbench
Overview界面点击start…
连接源数据库
红框内是需要根据修改的地方,第三个红框是自己数据库服务器的名字
目标选择
目标是包含迁移数据的 MySQL 数据库。选择现有的 MySQL Workbench 连接,或从下拉列表中选择 Manage Stored Connections 以创建新的 MySQL 连接。
点击next后经过一段读条获得
选择需要转移的数据库
接下来就一直next就可以了
中途存在warning的界面不需要在意,跟着next就行,总体没有问题:not found
如果我们已经基于SQL Server进行了开发,并且具有很多基础的数据库数据了,那么我们可以利用SQL Server导出到MySQL数据库中,这种是我们常见的一种开发方式,毕竟基于SQLServer数据库开发起来会比较快速一些。