由于工作需要,需要将MSSQL数据库中的信息移植到MySQL当中。在网上查了很多资料,大多说得比较简略,一般都是通过odbc来进行转换,然后根据出错信息对表进行修改。最初,也尝试了这种办法,发现MSSQL的提示信息很少,而错误却很多,所以这种办法并不可行。后来又尝试MySQL 官方提供的MySQL Migration Toolkit工具和SQLWays,发现Migration Toolkit中只要是含中文的信息都不能被移植,而SQLWays虽然可以移植中文,但是由于功能限制,所有表中的字段都只能有7个字母,这样并不能满足要求。经过自己的努力,终于将数据库移植成功。
具体的方法如下
  1.首先用MySQL Migration Toolkit进行数据库的移植,这里只移植表的结构。只要选择了原数据库(MSSQL)和目标数据库(MySQL)然后根据提示进行选择和点击next就可以了。值得注意的是在编码处要选择自定义的gb2312编码,如图所示:
 http://lizhilin.myrice.com/project/t1.jpg
 http://lizhilin.myrice.com/project/t2.jpg  2.通过SQLWays移植表中的数据.大体步骤也是选择原数据库和目标数据库后一路next就可以了。当读取完MSSQL中的信息后,再选择import就可以进行导入了。由于MySQL数据库中已经存在了对应的表,所以SQLWays会在移植过程中提示创建表和字段失败,不过数据还是会被移植的,这样就绕开了7字节限制,也正是我想要的结果。需要注意的是,SQLWays需要对数据源进行配置,所以还需要MySQL的ODBC包,并且在数据源中配置MSSQL和MySQL即可。  3.还有一点需要注意,由于两个数据库之间表的命名方式不同,所以在Migration Toolkit完成结构的一之后MySQL中的数据库会被命名为mytable.dbo(MSSQL中为mytable),如果想要命名为mytable,还需要进行一部操作:新建一个数据库命名为mytable,然后将mytable.dbo的结构拷贝到mytable中,然后删除mytable.dbo就可以了,这一步可以通过第三方GUI完成,比如EMS SQL Manager for MySQL等。  至此,两个数据库就完成了移植,希望本文对那些有相同需求的朋友有所帮助。

解决方案 »

  1.   

    还有一个办法....
    sqlways 会在导入以前让你确认开始...
    可以先不确认开始..
    手工修改相应表名和字段名称为需要的内容..再让sqlways运行导入..也可以到达相同效果..
    只是累啊
      

  2.   

    Executing SQL Statement INSERT INTO...Failed.  1054 Unknown column 'REPORTT' in 'field list'
    不行的
    只有表中的字段名不超过7位的时候才好使
    要不然就提示这样的错
    数据就导不进去了