背景:
我所在公司的官网使用了PHP进行重新开发,抛弃了原有.net开发环境,但需要使用到老官网的一些数据,所以需要进行数据迁移。
环境如下:
老官网:Windows Server 2008 R2, SQL Server 2008 R2
新官网:RedHat 6.5,MySQL,PHP...
====================我是分割线=========================
目前网络上有很多软件声称是可以进行SQL Server-> My SQL的数据迁移,比如OBDB2DB,但我尝试转换不成功,其他类似的小软件,我也没去测试。在这里我使用了MySQL官方提供的MySQL WorkBench,此软件功能强大,既可以设计开发数据库,也可以进行数据转移。具体链接,请大家自行去MySQL官网查找。
MySQL workbench安装过程略,具体迁移过程如下:
打开MySQL workbench->Database->Migration wizard->Start Migration.
在"Database system"选项中选择"Microsoft SQL Server",在Connection Method中选择"ODBC(native)",输入相应的服务器,用户名,密码,点击"Test Connection"即可测试是否连接成功。
在"Target Selection"页面中填入目标MySQL信息并测试连接情况,然后点击下一步。
在"Fetch Schemas list"页面中,软件会对源数据库进行数据检查以及获取相应信息。
在"Schemas Selection"选择你想要迁移的数据库,点击下一步。
在"Reverse Engineer Source"选项点击下一步即可。
在"Source Objects"中选择你想迁移源数据的类型,默认会勾选"Migrate Table objects",默认即可,点击下一步。
在"Migration"中选择下一步。
在"Manual editing"查看迁移可能存在的错误,警告。一般有错误几乎是无法迁移成功,有警告还是有可能的。
在"Target Creation Option"选项中选择"Create Schema in target RDBMS",是否需要创建"SQL Script"看自己的需求喽。默认是不会选中。
在"Create Schemas"页面中,软件会在目标MySQL中自动创建相应的Schemas以及Objects。
"Create Target Results"中可以查看到创建的结果,右侧会显示成功状态。
"Data Transfer Setup"页面中,软件会拷贝源数据到目标数据库,有三个选项可以选择,如果网络允许,直接选择"Online copy of table data to target RDBMS",即在线迁移。
"Bulk Data Transfer"页面中可以看到数据迁移的过程,如果迁移一直正常,那么就迁移成功啦。
可惜我本次迁移存在问题,记得之前页面的warning么,很有可能是那个问题。但只是1个表迁移有问题,其他表是没有问题的,可以连接到目标数据库去查看。
如果只是1个表迁移失败并且表中的数据不是很多,我们可以通过手动迁移,通过log可以看出,有一个表迁移失败。我们接下来手动迁移这个表。
打开MS SQL Server 2008 Management,找到对应的数据库,在数据库上点击右键“任务”->“生成脚本”
在选择对象中,选择“选择特定数据库对象”,找到想要导出的表,点击下一步。
在“设置脚本编写选项”页面中,点击高级选项。
“找到要编写标本的数据的类型”,选择“架构和数据”。
摘要选项,review相关信息,并点击下一步,即会自动生成脚本。
稍等片刻之后,可以在保存目录中找到脚本文件。
下图即是导出的MS SQL script,但由于导出的SQL script只适用于SQL Server,导入MySQL需要进一步修改,由于两者语法差别不大,稍稍修改即可,请自行搞定啦啦啦啦啦.....
修改后的语句,可以自动在MySQL命令行中执行插入数据,接下来的步骤请自行搞定啦阿拉拉了拉了。。。
==============我是分割线=========================
妈蛋,上面的图都白打马赛克了,最后一张全给暴漏了....
What the hell %>_<%