Migrate Mysql to SQL Server 2005

本文介绍了一种从MySQL迁移至SQLServer2005的方法,针对64位系统环境下MSDASQLnotregistered错误进行了探讨,并提供了解决方案,包括使用CSV文件作为中间媒介以及解决数据格式差异的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:鬼魂
来自:优快云

最近接到了一个项目的更新请求,要把数据库从mysql迁移到sql server 2005上面。我们的windows和sql server 2005都是64位的。看大家大部分使用的都是mysql odbc来做数据库移植,可我做了一下,却出现MSDASQL not registered错误,到msdn的论坛上一查,发现也有很多人遇到同样的错误。
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=396615&SiteID=1

看大家的解决方法是运行System32下面的wow64中的odbccad32.exe这个程序。可我运行完以后没有任何效果,DTS虽然能连接上,但却不能导入任何数据。就连导入CSV格式的数据也不行。但却在SSIS中可以使用MYSQLODBC连接到我的MYSQL应用上。接下来看到别人回复说这么做对sqlserver 2005和windows都是64位的没有作用,只有sqlserver 2005是32位的才可以,我彻底晕倒了。

不过项目还是要做的,只能找其他的办法了。

最后根据我以前做过的经验,就想出来一个临时的办法。先用mysql query browser把所有表的数据导出成csv格式的文件。然后用一个BULK INSERT的SQL命令来从CSV数据源中拿到数据并插入相应的表中。

BULK INSERT ord_programs FROM ' C:datafile.csv ' WITH (FIELDTERMINATOR = ' , ' ,ROWTERMINATOR = ' ' ,FIRSTROW = 1

虽然这样一个一个插入的比较累,但终于可以进行下去了。不过中间还是遇到了一些问题,这样的命令运行的时候,如果数据源中的内容本身就有逗号就比较惨了,我就改了好多。还有就是时间问题。sql server 2005的时间是datetime,格式是跟EXCEL一样,dd/mm/yyyy hh:mm:ss,而MYSQL的时间格式是 yyyy-mm-dd hh:mm:ss。我想到了一个比较快的解决方法。就是把导出的数据源用excel打开,此时这些时间字段就会显示######因为长度不够,把column的长度弄的长一点,时间就会自动转化为EXCEL的时间格式也就是SQLSERVER2005的时间格式了。此时把文件保存,忽略警告,因为我们改了格式,导出时的双引号就没有了,不过这个不影响导入。解决好这两个问题,导入就可以成功运行了。

转载请注明出处。来自优快云,作者:鬼魂

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值