将SQL Server数据迁移到MySQL的方法

一、SQL Server中常用数据类型与MySQL不同的地方

 

 

二、将SQL Server数据迁移到MySQL需要注意的一些问题

 

 

1、唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个null值。

 

2、存储过程的语法存在很大的不同,存储过程的迁移是最麻烦的,需要仔细修改。

 

3、程序中部分写的SQL语句由于语法的不同也要相应的修改。

 

三、将SQL Server数据迁移到MySQL的常见方法

 

 1、使用 SQLyog 迁移

 

优点

 

该迁移方法很简单,灵活,迁移时,可以进行字段的修改,比如在sql server中原来是datetime,然后迁移到mysql时你可以配置成timestamp;成功率很高;

 

缺点

 

迁移很慢!这是该方法最大的缺点,如果表的数据量达到几十万行,甚至几百万行,你会发现迁移起来真的很慢。明显比其他迁移方法慢很多。

 

 2、使用 powerdesigner 和 sql server 的脚本导出功能 来迁移

 

(1)、该方法首先使用 powerdesigner,对sql server数据库,进行逆向工程,得到E-R图,然后生成MySQL的建表语句。完成数据库结构的迁移;当然表结构的迁移,不使用powerdesigner一样也是可以的。比如我将表结构导出成语句,然后手动进行修改,然后在MySQL中运行,也是一样的;

 

(2)、然后使用 sql server的工具 SSMS,将sql server数据库中的表的数据,导出成insert语句,每个表对应导出一个文件,然后对文件进行一些处理,然后导入到MySQL数据库中。

 

3、使用Oracle MySQL Server 官方的 workbeach 工具进行迁移

 

(1)、在workbench 连接sql server时,用户需要有 view any database 的权限。不然workbench无法访问sql server的表结构的元数据,从而无法进行迁移。

 

(2)、还有使用 Navicat 来进行迁移的方法,方法和 SQLyog 是类似的。

例子

二、转移数据

 

我使用了MySQL的Client的工具SQLyog,这个工具的安装很简单。安装完成之后点击需要导入的目标数据库,点击右键【Import】->【Import Extenal Data】;

 

 

(Figure1:Import)

 

选择【Start a new job】,点击【下一步】;

 

 

(Figure2:Start a new job)

 

下面就是DSN的设置界面,如果你的下来列表中没有需要导出SQL Server数据库的DSN,那么需要通过【Create a New DSN】来创建一个新的DSN连接到SQL Sever;

 

 

(Figure3:Create a New DSN)

 

 

(Figure4:创建新数据源)

 

 

(Figure5:选择数据源类型)

 

把上面的设置保存为一个local.dsn文件;

 

 

(Figure6:选择数据源保存路径)

 

 

(Figure7:选择SQL Server服务器)

 

 

(Figure8:设置SQL Server帐号和密码)

 

 

(Figure9:选择SQL Server数据库)

 

 

(Figure10:测试数据源)

 

 

(Figure11:测试成功)

 

选中【File DSN】,在浏览中选择我们刚刚创建好的DSN,接着填写登录到SQL Server的帐号和密码;

 

 

(Figure12:选择DSN)

 

下一步,选择目标MySQL服务器,填写IP地址和帐号密码,并且需要选择目标数据库;

 

 

(Figure13:设置MySQL帐号和密码目标数据库)

 

这一步类似SQL Server的导入导出功能,这里可以拷贝一个表或者使用SQL脚本过滤数据;

 

 

(Figure14:表拷贝)

 

上面的全部过程就是为创建SQL Server与MySQL的一个管道,接下来就是最为重要的设置SQL Server表与MySQL表之间的对应关系了;里面包括了SQL Server表字段与MySQL表字段之间的对应关系【Map】,高级选项【Advanced】,过滤【WHERE】。

 

 

(Figure15:选择表对应关系)

 

下图Figure16,数据源【Source】,描述【Destination】,特别注意这里数据类型【Type】,这里的意思是转换目标的数据类型,但是不需要跟目标表的一样,因为这里是做为一个临时存储的数据类型,类似FindOn在SQL Server中是datetime,这里转换为MySQL的timestamp,其实MySQL目标表的数据类型是datetime,这样的设置也是可以转换成功的。

 

 

(Figure16:表字段转换)

 

 

(Figure17:高级选项)

 

 

(Figure18:Error)

 

 

(Figure19:Log)

 

 

(Figure20:执行信息)

 

 

(Figure21:执行结果)

 

 

(Figure22:原始SQL Server的数据列表)

 

 

(Figure23:转移到MySQL的数据列表)

 

对比下Figure20与Figure21,发现我们数据已经全部转移成功了

时间: 2024-12-27 18:11:36

将SQL Server数据迁移到MySQL的方法的相关文章

navicat工具来将SQL Server数据迁移到MySQL

下面来说说用navicat工具来将SQL Server数据迁移到MySQL上: 1. 新建需要迁移的数据库 2. 打开数据库,点击导入向导 3.  选择数据导入格式 4. 选择数据源 5. 连接属性 6. 选定要迁移的表 7. 定义目标表 8. 更改实际情况对目标表进行更改 9.  选择导入模式 10. 开始导入 11. 导入后结果 至此,迁移完成,可以更改实际情况再对迁移后的表进行更改. 顶 0 踩

如何将SQL Server数据迁移到MySQL

一.背景 由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL:由于涉及的表比较多,所以想在MySQL中生成对应表并导入数据: 上网找了些资料,如:将ACCESS和MSSQL导入MYSQL中.MySQL Migration 实现 MSSQL 到 MySQL数据迁移,虽然不知道里面的做法是否可以成功转移,但是里面的过程比较复杂,没有去尝试,后来自己找到了方法,最重要就是简单和准确(暂时没发现明显的BUG),这里

sqlserver-关于oracle向sql server数据迁移问题

问题描述 关于oracle向sql server数据迁移问题 请教各位大神怎么让这个接口程序出来呢 解决方案 在 SQL Server 服务器上要装 Oracle 的客户端,并且做好配置. 其实所有的数据库都需要有客户端才能访问,谁叫SQL Server是微软的呢,装系统的时候就偷偷地把客户端装上去了. 如果是一次性迁移,不如Oracle生成脚本,人工修改一下,到SQL Server中执行. 解决方案二: 可以参考一下这个链接 Microsoft OLE DB Provider for Orac

SQL Server数据迁移至PostgreSQL出错的解释以及解决方案_PostgreSQL

问题重现: 1.PG客户端: postgres=# create table text_test (id int,info text); CREATE TABLE postgres=# insert into text_test values (1,E'\0x00'); ERROR: invalid byte sequence for encoding "UTF8": 0x00 2.SQL Server产生数据 create table test_varchar(id int,name

SQL Server Migration Assistant for MySQL使用方法

  SQL Server迁移助手(SSMA)团队今天宣布推出针对MySQL的迁移助手Microsoft SQL Server Migration Assistant 2008 for MySQL. 阅读相关信息: 微软发布SQL Server迁移助手为MySQL 下载SSMA为MySQL : SQL Server迁移助手为MySQL 1.0 其实,微软同时发布了其他三个迁移助手: SSMA for Access, SSMA for Oracle, and SSMA for Sybase (all

Sql Server 数据迁移问题的解决

在工作中遇到一个数据迁移的问题.是通过Sql Server 2008 Management studio产生的scripts来解决的.现在来说说此实际问题:生产环境的配置是数据文件有20GB大,log文件有10GB大,实际数据只占用了500MB,所以大部分空间是空的.而测试环境因硬盘小,数据文件所在的驱动器总共只有28GB.现在想做的是把生产环境的数据拷贝到测试环境上来.之前的办法都是完整备份.即从生产上做一个完整备份,然后到测试环境上恢复,就可以将数据很好地复制到测试环境.完整备份有挺多好处,

sql server数据导到mysql数据库的环境配置

  前段时间 尝试进行sqlserver数据库移植到mysql数据库 方案是 perl语言读取sqlserver 作相应的类型转换数据处理后 写入mysql 两个执行端和一个接收端 最终达到的速度是一千万级条数的表 大概5分钟内导入完毕 其中解决了乱码等问题 3G大小的数据库耗时半个小时 15G的耗时5个小时 整个流程如下: 首先是环境的配置和插件的安装. 首先是接收端 在一台linux系统的机子中 安装mysql 如果有地理坐标字段geo的话 mysql要用5.5以上的版本才行 CentOS6

如何把sqlserver数据迁移到mysql数据库及需要注意事项_MsSql

在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL.下面是小编日常整理的一种sqlserver数据库迁移的方法. 一.SQL Server中常用数据类型与MySQL不同的地方 二.将SQL Server数据迁移到MySQL需要注意的一些问题 1.唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个n

如何把sqlserver数据迁移到mysql数据库及需要注意事项

在项目开发中,有时由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据迁移到MySQL.下面是小编日常整理的一种sqlserver数据库迁移的方法. 一.SQL Server中常用数据类型与MySQL不同的地方 二.将SQL Server数据迁移到MySQL需要注意的一些问题 1.唯一索引的不同,sql server的唯一索引的字段只能允许存在一个null值,而mysql,一直oracle中唯一索引对应的字段都允许存在多个n