最近有个项目需要从asp+sqlserver2005转成php+mysql,除了代码方面要修改,当然还涉及到数据库的修改迁移问题。


已经有了原数据库以及数据内容,如何迁移到mysql呢?最基本的当然是一个一个的导出重建,但是如果数据库不是很简单的几个表,那么这手工工作也是相当繁杂。在网络上搜索了一通,各种做法的都有,但是最直接有效最简单的,应该还是用oracle公司的原厂工具。之前下了一个微软的MYSQL migration tool, 后来察觉好像这个工具只可以从mysql转到sqlserver的,不能反向,继续搜索。最终找了一个帖子,介绍mysql的数据库迁移工具,得知现已嵌入到mysql workbench里面,果断的下载了最新版本的mysql workbench。


找到database菜单,有一个migration wizard, 很显然就是这个了。打开了一看,也挺简单的,开始准备连数据库。结果发现测试的sqlserver2005怎么也连不上,开始telnet端口,端口居然也不通。开始还以为是运营商封了端口,找运营商,直接说sqlserver2005不对外连接,自己解决(第一次用,很不熟)。又开始整sqlserver2005对外开放连接的问题,开通TCP/IP跟namepipes,还是不行,针对这个问题已折腾了一整天,还是没解决好。想放弃这个做法,变通一下,把workbench装到sqlserver本地,连接我本地的mysql(这个方法是可行的)。坚持总是有回报的,在打算放弃的时候,尝试了一下TCP/IP的动态端口,结果发现端口通了(之前一直使用1433端口,本机会通,外界无论怎么telnet都是不通)。于是开始尝试用workbench连接源数据库(sqlserver2005),整了一通,发现都整不好,终于找到了一篇官方的图文说明,按照这个说明做下去,一点问题都没有。


http://mysqlworkbench.org/2012/07/migrating-from-ms-sql-server-to-mysql-using-workbench-migration-wizard/


在连接sqlserver2005的源数据库时,采用的数据库引擎,软件默认的是SQL SERVER,参考文章里面用的是要native client 的,我就是根据这个修改才连接成功的。


根据文章的步骤一步一步的next,完全没有任何问题,过程中出现了一些警告,是因为源数据库是GBK编码,而后来的数据库是utf8编码,记录集内容转换有点问题。但是由于我的数据量不大,对我没什么影响。


PS: 数据库转换前后的schema名称是一致的,转换过程很多地方都可以修改sql语句,有需求的可以在过程中修改。