zoukankan      html  css  js  c++  java
  • SQLServer数据库转换成MySQL数据库

    由于工作需要,系统原先的SQLServer数据库要转换成MYSQL数据库,所以这两天就一直在查阅这方面的资料。最开始,我尝试从SQLServer中导出SQL文件,然后导入到MYSQL数据库中,发现报错,大概意思就是类型不对。后来发现一篇博文,感觉靠谱,一步一步实施下去发现导入是成功了,但是有问题,下面我先将博文内容呈现(转载自:http://www.cnblogs.com/gaizai/p/3237907.html

    一、背景

    由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL;由于涉及的表比较多,所以想在MySQL中生成对应表并导入数据;

    上网找了些资料,如:将ACCESS和MSSQL导入MYSQL中MySQL Migration 实现 MSSQL 到 MySQL数据迁移,虽然不知道里面的做法是否可以成功转移,但是里面的过程比较复杂,没有去尝试,后来自己找到了方法,最重要就是简单和准确(暂时没发现明显的BUG),这里分享给大家。

    二、转移数据

    我使用了MySQL的Client的工具SQLyog,这个工具的安装很简单。安装完成之后点击需要导入的目标数据库,点击右键【Import】->【Import Extenal Data】;

    clip_image002

    (Figure1:Import)

    选择【Start a new job】,点击【下一步】;

    clip_image003

    (Figure2:Start a new job)

    下面就是DSN的设置界面,如果你的下来列表中没有需要导出SQL Server数据库的DSN,那么需要通过【Create a New DSN】来创建一个新的DSN连接到SQL Sever;

    clip_image004

    (Figure3:Create a New DSN)

    clip_image005

    (Figure4:创建新数据源)

    clip_image006

    (Figure5:选择数据源类型)

    把上面的设置保存为一个local.dsn文件;

    clip_image007

    (Figure6:选择数据源保存路径)

    clip_image008

    (Figure7:选择SQL Server服务器)

    clip_image009

    (Figure8:设置SQL Server帐号和密码)

    clip_image010

    (Figure9:选择SQL Server数据库)

    clip_image011

    (Figure10:测试数据源)

    clip_image012

    (Figure11:测试成功)

    选中【File DSN】,在浏览中选择我们刚刚创建好的DSN,接着填写登录到SQL Server的帐号和密码;

    clip_image013

    (Figure12:选择DSN)

    下一步,选择目标MySQL服务器,填写IP地址和帐号密码,并且需要选择目标数据库;

    clip_image014

    (Figure13:设置MySQL帐号和密码目标数据库)

    这一步类似SQL Server的导入导出功能,这里可以拷贝一个表或者使用SQL脚本过滤数据;

    clip_image015

    (Figure14:表拷贝)

    上面的全部过程就是为创建SQL Server与MySQL的一个管道,接下来就是最为重要的设置SQL Server表与MySQL表之间的对应关系了;里面包括了SQL Server表字段与MySQL表字段之间的对应关系【Map】,高级选项【Advanced】,过滤【WHERE】。

    clip_image016

    (Figure15:选择表对应关系)

    下图Figure16,数据源【Source】,描述【Destination】,特别注意这里数据类型【Type】,这里的意思是转换目标的数据类型,但是不需要跟目标表的一样,因为这里是做为一个临时存储的数据类型,类似FindOn在SQL Server中是datetime,这里转换为MySQL的timestamp,其实MySQL目标表的数据类型是datetime,这样的设置也是可以转换成功的。

    clip_image018

    (Figure16:表字段转换)

    clip_image019

    (Figure17:高级选项)

    clip_image020

    (Figure18:Error)

    clip_image021

    (Figure19:Log)

    clip_image022

    (Figure20:执行信息)

    clip_image023

    (Figure21:执行结果)

    clip_image024

    (Figure22:原始SQL Server的数据列表)

    clip_image025

    (Figure23:转移到MySQL的数据列表)

    对比下Figure20与Figure21,发现我们数据已经全部转移成功了;

    以上是“听风吹雨”的博文。参照这个博文,我这边出现两个问题,一个是导入的数据表远远超过实际的表;第二个是有些数据表没有导入成功。在仔细阅读sqlLog出错日志文件(自己选的Log file的目录下),发现有个别数据表字段类型不对,导致导入不成功,基本上是datetime字段类型,博文中提到说(特别注意这里数据类型【Type】,这里的意思是转换目标的数据类型,但是不需要跟目标表的一样,因为这里是做为一个临时存储的数据类型,类似FindOn在SQL Server中是datetime,这里转换为MySQL的timestamp,其实MySQL目标表的数据类型是datetime,这样的设置也是可以转换成功的),但是我这里转换不成功,而后我就将所有timestamp类型的都手动改成了datetime类型。导入成功,第二个问题解决。

    至于第一个问题,我发现,导入的那些表全是原先SQLServer数据库中的视图。所以在再次导入的时候,我只选择了自己需要的数据库表,切记全选要慎重。

    (谨以此记录下,以备以后查找。我的SQLServer数据库版本为SQLServer2005,mysql服务器版本为5.5)

  • 相关阅读:
    jQuery 获取 select 值和文本
    js 获取字符串中最后一个斜杠后面的内容
    asp.net web.config 经典模式和集成模式相关配置
    IIS8 web.config 重定向之后 报错 500.19
    nodeJs学习-06 模块化、系统模块、自定义模块、express框架
    nodeJs学习-05 案例:http/fs/querystring/url
    nodeJs学习-04 POST数据请求,分段发送,分段接收
    nodeJs学习-03 GET数据请求,js拆解/querystring/url
    nodeJs学习-02 fs模块(文件操作)
    nodeJs学习-01 http模块
  • 原文地址:https://www.cnblogs.com/wyynts/p/4173472.html
Copyright © 2011-2022 走看看