从SQL server 数据库迁移到Mysql数据库

收到了入职公司后的第一个任务,研究一下如何从Sql Server数据库迁移到Mysql数据库。

通过查询了很多资料,选择两种工具进行数据库的迁移测试,分别为:Navicat Premium官方网址 ;和DB2DB官方网址

测试用源数据库

因为没有现成的数据库供迁移测试,我在****上找到了一个Sql Server教程上所使用的教务系统数据库文件供测试使用。https://www.cnblogs.com/caryliu/archive/2012/09/01/2666472.html 参考博客地址。

使用Navicat进行迁移

1.创建一个和SQL Server数据库同名的sql_test数据库。
从SQL server 数据库迁移到Mysql数据库
2.在数据上单击右键选择数据传输功能,在常规页面设置好数据源和目标。点击开始,进行数据传输。
从SQL server 数据库迁移到Mysql数据库
3.数据传输完成。
从SQL server 数据库迁移到Mysql数据库

使用DB2DB进行数据库迁移

1.首先要提前创建数据库,这点和之前相同。
2.设置数据源和目的。
从SQL server 数据库迁移到Mysql数据库
3.之后可以一路下一步,完成数据传输。
从SQL server 数据库迁移到Mysql数据库

两种方式对比

首先说明一下,两种方式都能把记录完整地迁移到新的数据库。但均不支持储存过程,视图和用户函数。

默认值支持情况:

Navicat:完全不支持SQL Server的默认值,传输后的数据均无默认值。
DB2DB:支持默认值。

外键:

Navicat:支持外键,传输后一致。
DB2DB:不支持,传输后均无外键。

Navicat对少部分数据类型支持不好

在测试过程中,发现Navicat对于sysname这个数据类型的支持不好,在传输过程中会将其转换为varchar(0),导致传输报错。而使用DB2DB则不会存在此类问题。

速度方面

这方面没有足够的数据进行测试,但是通过查阅相关的资料博客,得知在主流的传输工具中DB2DB速度是最快的。

总结

基于以上的对比,建议使用DB2DB工具进行数据库的迁移,之后人工添加原有的外键,已经缺失的储存过程,视图和用户函数。之后即可投入生产工作使用。

注:

由于本人的道德修养较高外加贫穷(公司电脑不让装盗版…)本次测试所使用的软件均为试用版,Navicat Premium限期15天,而DB2DB限制5万条记录。