次文章主要向大家介绍的是将MSSQL数据转换到MySQL数据库的时机操作方法(MSSQL2MYSQL) ,对于这个问题了很早就有想解决的年头了,但是到现在还不能算是解决,但至少先把我斗争到现在的可行的方法以及我尝试过的方法列举出来。
最早使用的应该是DBConvert for MSSQL and MySQL工具,但不知道为什么就是无法连接我的MSSQL,可能是2005的原因吧,链接2000好像是很OK的,因为我测试连接虚拟主机的MSSQL2000完全正常,链接本机的MSSQL2005失败,没有办法只好放弃。
然后继续找方法,发现一个问题是,我查找所有的中文的资料(就是Google查找出来的中文网页),都没有给我太好的结果,***只好用英文关键字查找:
convert mssql to mysql,竟然***条就是MYSQL数据库官方的网页,进去浏览后发现很不错,基本上能够解决我的问题,并提出了五种方法,我查找的中文网页基本上是让我通过ODBC工具来解决的,即使给出代码之类也没有好用的代码。罢,真是差距。
简单读来,文章中提出了五种方法,分别如下(其实,这个网页的标题也不是MSSQL2MYSQL数据库,所以有五种方法也应该理解,原文链接:Migrating from Microsoft SQL Server and Access to MySQL):
- MSSQL2MYSQL
- Microsoft DTS
- SQLyog
- Access Export
- Text Import/Export
以上的几种转换,我想都应该要用到ODBC for MYSQL的工具吧,所以请大家先自行下载安装,并重启电脑后再使用以上的方法。
Microsoft DTS应该算是MSSQL自带的导入导出工具吧,在导入导出ACCESS和文本等方面MSSQL还是很不错的,不过我在MSSQL2005的导入导出工具中竟然没有找到ODBC,够晕,难道没有?看来还需要查查文档。
而Access Export就是Access的导出工具,导出的时候选择ODBC,当然也需要先配置好MYSQL的ODBC参数才好进行。
SQLyog是一个MYSQL的管理工具吧,由于懒得下载,所以也没有测试。
Text Import/Export这个我在phpMyAdmin工具中导入文本文件即可,这可能比较适合小量的数据,对于大量的工具我想就不是很方便了。
MSSQL2MYSQL是一个VB类的代码,全部的代码请参见此页:http://www.kofler.cc/mysql/mssql2mysql.txt。将这个代码复制到VBA或者VB的类模块中,按照说明设置好参数,运行即开始了数据的转换过程。这里有一点值得注意的是,由于不同的数据库引擎,使用的字段的类型是不一样的,所以涉及到字段类型转换,不过这份代码已经解决了这份问题,所以不用考虑数据转换,不过我也就基本的数据类型永不到image等等类型所以我想有没有和我关系不大。
我打开VB6真的设置了参数运行了一遍,可以通过,本来准备写成工具的,结果发现人家本来就提供了第三方的GUI工具,唉,早知道我就直接下GUI工具就可以了不必那么累让自己动手一遍。
OK,下面有一个GUI versions的部分,这里提供了两个MSSQL2MYSQL的GUI工具,这两个工具都是比较简单,我简单的说一下参数,MSSQL和MYSQL数据库的链接参数我想都会的,那个drop database参数大概是说在转换前先删除MYSQL中的该数据库,然后再做转换,就是为了干净嘛,所以如果转换到已经存在的数据库中的话就需要注意了,verbosity其实就是output选项,是转换到数据库呢还是输出为SQL文件呢?
1为输出文件,0为直接导入到MYSQL,其余没有什么好说的,字符编码一般我想也都用UTF-8吧。其余就自己琢磨吧。
关于MSSQL2MYSQL的效率,真是让我大失所望,可以说虽然找到了这样的方法,但是真正的转换不仅仅是痛苦。上面的MSSQL2MYSQL代码转换方法,效率大概是1小时5000条记录,而使用Access Export,好像也没有快多少。要知道我600万条记录,那要我转换到猴年马月?疯掉。
看来还得想其他办法。不过话又说回来,我将600万条记录使用BCP映射的方法导入到SQL SERVER中,大概也要半个多小时,而使用SQL SERVER的导出功能将数据库导出为ACCESS,时间也不短,***等的没有耐心只好开着电脑就去睡觉了。
这大概就是我现阶段所尝试的MSSQL2MYSQL数据库的方法吧,如果有朋友有更好更快的方法,请务必告知一声,谢谢更新:有可能会提示无法连接MYSQL,此部分可能和你装的MYSQL ODBC有关系,因为默认的设置文字好像有问题,我把ODBC版本设置为“MySQL ODBC 5.1 Driver”,这样就可以连接了。可能新版本的MYSQL ODBC已经有所更新而代码中还是旧版本的所以不支持吧。
【编辑推荐】