将mysql数据库数据转移到sql server 2008

        最近在做一个项目的时候,客户提需求说要完成“从Mysql数据库抽取现有数据,然后将其添加到Sql Server 2008中”,注意这边的前提是两个数据库中表结构相同。

       在网上搜索了很多文章,也尝试了很多软件。总是发现这样那样的问题,于是决定自己摸索。首先想到了“如何从mysql中抽取数据”,找到了著名的navicat(导航猫)。这确实是一款功能强大的软件,用他成功的将mysql中数据抽取了出来。但是在抽取的时候需要按照下列步骤来:

1.在所要备份数据的数据库名称上点击右键,选择“数据传输”,

2.在“常规”选项卡中,在左侧的数据库源中,选择连接、数据库及所要备份的数据库对象;

3.在右侧“目标选项中”点击“文件”,输入文件存放地址、文件名(文件名必须为“data.sql)SQL格式、编码格式。注意:这里SQL格式选择默认的“Same as source server”,编码选择“20936 (Simplified Chinese GB2312)”,否则可能导致数据文件乱码!设置好后如下图,

4. 设置好后,切换到“高级”选项卡。

按照下图进行相应设置:

设置完成点击开始,然后选择“确定”后,即开始传输数据。过程可能会比较漫长,请耐心等待。

等备份成功后,点击关闭。

        这样得到data.sql文件后,问题又出来了:直接在sql server中导入是不成功的,因为有些表设置了identity字段,必须手动打开才行。于是又是一阵翻江倒海的找,可是还是没有找到恰当的方法,最后被逼无奈,自己写程序处理吧。现在将自己的程序贡献出来,也免的大家的重复劳动啦~

       在刚才设置的路径下可以找到已经备份好的"data.sql"文件。将该文件放置到“数据库迁移(mysql 2 sqlserver)\tool”目录下。

注意:文件名必须为“data.sql”文件,并且将其存放在tool文件夹根目录下。两者之一没有正确操作的话,可能导致软件提示“文件不存在或者不是文件!”。

由于Sql Server中要求对标注了identity的字段插入,需打开identity_insert,所以这里有个“table_info.txt”文件,用于存放没有identity字段的表名(每一行一个表名)。

       运行run.bat文件,显示“文件处理成功”后,在当前根目下会生成"data_complete.sql"文件,该文件即为最终的备份文件。将它在sql server中执行就OK拉!

   第一次完全自己手打文章,有不好的地方还请多多见谅噢~!

 

你可能感兴趣的:(将mysql数据库数据转移到sql server 2008)