sql数据库转换mysql_SQLServer数据库转换成MySQL数据库

由于工作需要,系统原先的SQLServer数据库要转换成MYSQL数据库,所以这两天就一直在查阅这方面的资料。最开始,我尝试从SQLServer中导出SQL文件,然后导入到MYSQL数据库中,发现报错,大概意思就是类型不对。后来发现一篇博文,感觉靠谱,一步一步实施下去发现导入是成功了,但是有问题,下面我先将博文内容呈现(转载自:http://www.cnblogs.com/gaizai/p/3237907.html)

一、背景

由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL;由于涉及的表比较多,所以想在MySQL中生成对应表并导入数据;

上网找了些资料,如:将ACCESS和MSSQL导入MYSQL中、MySQL Migration 实现 MSSQL 到 MySQL数据迁移,虽然不知道里面的做法是否可以成功转移,但是里面的过程比较复杂,没有去尝试,后来自己找到了方法,最重要就是简单和准确(暂时没发现明显的BUG),这里分享给大家。

二、转移数据

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

23fbeefc27c1df273be10766eed210a0.png

(Figure1:Import)

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

2d26d49ac65cfefa6d1ff3976cb830fa.png

(Figure2:Start a new job)

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

17be8d41c918d113b0a7d30e1621e234.png

(Figure3:Create a New DSN)

c9ef6ef555da574acf84a50fd0a1dd62.png

(Figure4:创建新数据源)

267459b1c1c6bd314334e66e94ba65d5.png

(Figure5:选择数据源类型)

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

5a714ac1be9e01425d897408829d63db.png

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

c642761aeab39af15c7496993e9cfb1a.png

(Figure7:选择SQL Server服务器)

16c2a07d5b87d540e5713129d88cb58e.png

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

e6e353d3a7143720681af91151f28341.png

(Figure9:选择SQL Server数据库)

2f52386ae1ac9966baa381bc3eff9a45.png

(Figure10:测试数据源)

930b7372a2e4c549962d28bce2041e2b.png

(Figure11:测试成功)

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

edd1a45d602df4d9ea89f835cd7d0c93.png

(Figure12:选择DSN)

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

b0d05c7242a04cfbf4cd6c63173bb08f.png

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

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

2866b0d72ff2c4375722276ef58320f0.png

(Figure14:表拷贝)

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

7d188902565a2c098cd27deb68959201.png

(Figure15:选择表对应关系)

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

a13e365bf0920529c0ff268dfee1aca1.png

(Figure16:表字段转换)

03be72adb2599b8c97e51d3587f49432.png

(Figure17:高级选项)

ea5e995bd3efe5b1dc4dfa31c82147f7.png

(Figure18:Error)

168a21516c2b46192e35465688e38642.png

(Figure19:Log)

2651e15c4d5d2fb86a51d9c32e09d381.png

(Figure20:执行信息)

1998b852a52eb0e4826f50078a163300.png

(Figure21:执行结果)

def5e159462e113e46578f275a77c858.png

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

676a423eadd20d9163cd326b2638921f.png

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

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

以上是“听风吹雨”的博文。参照这个博文,我这边出现两个问题,一个是导入的数据表远远超过实际的表;第二个是有些数据表没有导入成功。在仔细阅读sqlLog出错日志文件(自己选的Log file的目录下),发现有个别数据表字段类型不对,导致导入不成功,基本上是datetime字段类型,博文中提到说(特别注意这里数据类型【Type】,这里的意思是转换目标的数据类型,但是不需要跟目标表的一样,因为这里是做为一个临时存储的数据类型,类似FindOn在SQL Server中是datetime,这里转换为MySQL的timestamp,其实MySQL目标表的数据类型是datetime,这样的设置也是可以转换成功的),但是我这里转换不成功,而后我就将所有timestamp类型的都手动改成了datetime类型。导入成功,第二个问题解决。

至于第一个问题,我发现,导入的那些表全是原先SQLServer数据库中的视图。所以在再次导入的时候,我只选择了自己需要的数据库表,切记全选要慎重。

(谨以此记录下,以备以后查找。我的SQLServer数据库版本为SQLServer2005,mysql服务器版本为5.5)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值