概述
需要将sql server的数据导入到mysql中,由于2种数据库存在各种差异,比如表字段类型就有很多不同,因此需要工具来实现。
这里使用SQLyog来实现。
SQLyog安装
安装过程参考文档:https://blog.csdn.net/Sunshine_liang1/article/details/84400820
注意:版本不能太低,必须要有导入外部数据才可以。
ODBC数据源
由于SQLyog只能连接到mysql,它不能连接sql server,因此连接sql server的工作,需要由odbc来进行连接。
以windows 11为例:
点击左下角的windows图标,输入odbc
就可以看到搜索结果,点击64位的
点击添加
选择sql server
输入信息
选择密码登录,输入账号和密码
选择数据库
点击完成
SQLyog数据导入
新建mysql连接
创建一个空库,也就是要传输的数据库名
CREATE DATABASE AdventureWorksDW2014 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
导入外部数据
点击导入外部数据
下一步
选择系统dsn,输入sql server的用户名和密码
选择mysql数据库
选择mysql数据库
从源拷贝
勾选第一个表,点击右边的三个点
点击编辑sql
这里会显示创建SQL表语句
将这段sql语句复制下来,然后手动在myql中运行,
CREATE TABLE `AdventureWorksDW2014`.`AdventureWorksDWBuildVersion`(
`DBVersion` varchar(50) NULL,
`VersionDate` timestamp(6) NULL
);
注意:SQLyog不会自动在目标数据库中创建表,创建的表的动作,需要手动完成才可以。
由于sql server和mysql表的字段存在差异,因此软件会自动生成与之匹配的创建SQL表语句
但是生成的创建SQL表语句并不是100%准确,我验证了一下,准确率在99%,准确率还是很高的。
务必勾选外键检查,它会帮你检查外键关联,自动调整传输表顺序,父关联表,会优先导入。
点击下一步
点击下一步
提示导入完成
整个传输过程完成
注意:上面只是演示了一张表,其实可以选择多个表,进行一次性传输,但前提是目标库中已经创建好表结构,就可以批量传输了。
传输过程是单进程的,一个表一个表的传,一条条数据插入,所以传输速度会比较慢。
如果sql server mdf文件在200m左右,传输需要花费30分钟左右。
验证
打开数据表,查看数据