背景:


我所在公司的官网使用了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.


wKiom1ZqNKCQtWm4AACwJWN0rPI090.png


在"Database system"选项中选择"Microsoft SQL Server",在Connection Method中选择"ODBC(native)",输入相应的服务器,用户名,密码,点击"Test Connection"即可测试是否连接成功。

wKiom1ZqNhrC29VRAAGEF3pljLU037.png


在"Target Selection"页面中填入目标MySQL信息并测试连接情况,然后点击下一步。


wKiom1ZqN_2S0g4pAAGWWT2Jo6o713.png


在"Fetch Schemas list"页面中,软件会对源数据库进行数据检查以及获取相应信息。


wKioL1ZqOMSDD0J5AAC66Ndm9Ko262.png


在"Schemas Selection"选择你想要迁移的数据库,点击下一步。


wKioL1ZqOvDBmGpMAAD-T6kD9kA778.png


在"Reverse Engineer Source"选项点击下一步即可。

wKiom1ZqOvCzIs0BAAC3MrF1VNA864.png


在"Source Objects"中选择你想迁移源数据的类型,默认会勾选"Migrate Table objects",默认即可,点击下一步。


wKioL1ZqOvLi7b_4AADikynUbHw590.png


在"Migration"中选择下一步。


wKioL1ZqOvOQI3HIAAC4RPLxmzc094.png


在"Manual editing"查看迁移可能存在的错误,警告。一般有错误几乎是无法迁移成功,有警告还是有可能的。


wKioL1ZqOvWR6jTLAACkUQ9Yfek528.png


在"Target Creation Option"选项中选择"Create Schema in target RDBMS",是否需要创建"SQL Script"看自己的需求喽。默认是不会选中。


wKioL1ZqOvayDiQnAADOixvTm4A649.png


在"Create Schemas"页面中,软件会在目标MySQL中自动创建相应的Schemas以及Objects。


wKioL1ZqOvfjfoQHAADQhhNNMLc136.png


"Create Target Results"中可以查看到创建的结果,右侧会显示成功状态。


wKiom1ZqOviA3DsoAAE9EycyGXQ224.png


"Data Transfer Setup"页面中,软件会拷贝源数据到目标数据库,有三个选项可以选择,如果网络允许,直接选择"Online copy of table data to target RDBMS",即在线迁移。


wKiom1ZqOvrintp3AADbj9QfKXg059.png


"Bulk Data Transfer"页面中可以看到数据迁移的过程,如果迁移一直正常,那么就迁移成功啦。


wKioL1ZqOvyTjqRcAACvQbzm2kc514.png


可惜我本次迁移存在问题,记得之前页面的warning么,很有可能是那个问题。但只是1个表迁移有问题,其他表是没有问题的,可以连接到目标数据库去查看。


wKioL1ZqPWmxq1cqAAAT8areXE8838.png


如果只是1个表迁移失败并且表中的数据不是很多,我们可以通过手动迁移,通过log可以看出,有一个表迁移失败。我们接下来手动迁移这个表。


wKioL1ZqPkLTmOY8AABCaic-tXE681.png


打开MS SQL Server 2008 Management,找到对应的数据库,在数据库上点击右键“任务”->“生成脚本”


wKioL1ZqRFHj77QDAAIsqCZ_KZc161.png


在选择对象中,选择“选择特定数据库对象”,找到想要导出的表,点击下一步。


wKiom1ZqRFKCehB5AAC26KolVs0199.png


在“设置脚本编写选项”页面中,点击高级选项。


wKioL1ZqRFSBB3PUAADopUKYmws955.png


“找到要编写标本的数据的类型”,选择“架构和数据”。


wKiom1ZqRFOwOdXsAABlT6khMMg710.png


摘要选项,review相关信息,并点击下一步,即会自动生成脚本。


wKioL1ZqRFWjdgnaAACGrJCxnkw420.png


稍等片刻之后,可以在保存目录中找到脚本文件。


wKioL1ZqReqQgCFsAABzB0Q40wo413.png


下图即是导出的MS SQL script,但由于导出的SQL script只适用于SQL Server,导入MySQL需要进一步修改,由于两者语法差别不大,稍稍修改即可,请自行搞定啦啦啦啦啦.....


wKiom1ZqReuz_h82AAEscwSntSk845.png


修改后的语句,可以自动在MySQL命令行中执行插入数据,接下来的步骤请自行搞定啦阿拉拉了拉了。。。



==============我是分割线=========================


妈蛋,上面的图都白打马赛克了,最后一张全给暴漏了....


What the hell %>_<%