乘风原创程序

  • 从SQL SERVER迁移数据库到达梦DM8数据库
  • 2020/10/9 9:08:21
  • ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?从SQL SERVER迁移数据库到达梦DM8数据库

    由于从事的开发项目中,大部门使用的是微软的sql server数据库,最近由于项目国产化的需要,开始学习、了解达梦数据库的相关技术知识,也参加了由达梦公司组织的为期三天的达梦数据库DM8的学习,现就从SQL SERVER数据库迁移数据到达梦的DM8数据库的过程中遇到的相关问题作详细说明。

    本次使用的数据迁移工具是由达梦公司提供的DM数据迁移工具,此工具在安装DM8数据库之后会自动安装到电脑中。此次使用的SQL SERVER版本为SQL SERVER2008 R2。此次迁移主要包括表和视图。下面就具体的迁移步骤作详细说明:

    1.打开DM数据迁移工具,新建迁移任务,如下图所示:

    2.在打开的迁移任务界面框中,输入数据库所在主机IP,数据库访问端口,sql server系统默认安装时,端口号都为1433,数据库登录用户名,数据库登录密码和准备迁移的数据库名称,”数据库名(M)”这一项如果没有相应的数据库出来,可点击后面的“刷新”按钮进行刷新,具体如下图所示:

    这里有一点需要特别说明的,如果数据库名这一项是空的,没有相应的数据库列表显示,代表没有正确连接到对应的数据库服务,这时需要检查上面的信息是否填写有误,另外,“主机名”这一项,建议直接用IP,像我们在安装sql server时,有时会指定实例名称,这时如果加上实例名称,有可能会连接不上,我这边在迁移时,由于带了实例名,就一直连接不上数据库,如果建议直接用IP连接,不要带上实例名;

    3.填写将要迁移到的达梦数据库的相关登录信息,如下图所示:

    4.在这一步骤中,“创建模式”这一项勾选之后,在迁移时,会默认在DM8数据库中创建一个dbo模式,另外,后面的“保持对象名大小写”这一项,如果勾选中,那么在迁移后,在DM8中,对应的表名、视图名等会与Sql server中的表名、视图名等的大小写保持一致,如果此项不勾选,那么迁移完之后,所有的表名、视图名等都会变成大写的,如下图所示:

    5.在此步骤可勾选将要迁移的表、视图,如下图所示:

    6.在此步骤中,点击“完成”按钮可进行数据库的迁移工作,如下图所示:

    7.在此步骤中,可看到相关的迁移进度信息,如下图所示:

    迁移结束后,界面会显示相关的迁移结果信息,如果有迁移失败的,可通过点击“查看详细信息”按钮进行查看具体的迁移失败原因,如下图所示:

    在本次迁移结束后,查看迁移结果发现,所有的表都已成功迁移过来了,但视图没有成功迁移过来,点击上图的“查看详细信息”后发现,视图迁移失败主要是由于双引号问题所导致的,DM8中创建视图时,在模式、表名、字段之间需要加上双引号,但在sql server中创建视图时,sql语句中的模式、表名与字段之间是不需要加双引号,所以由于语法的一点点区别,所以迁移视图时会报错,下面是sql server视图中的语句和DM8视图中的语句,如下所示:

    Sql server创建视图语句:

    CREATE VIEW [dbo].[vw_info]

    AS

    SELECT? dbo.bc_infotype.iftIfcCode, dbo.bc_infotype.iftName, dbo.bc_info.infID, dbo.bc_info.infIftCode, dbo.bc_info.infTitle, dbo.bc_info.infSubTitle, dbo.bc_info.infCoverImage, dbo.bc_info.infLinkUrl,

    dbo.bc_info.infVideoUrl,dbo.bc_info.infFileUrl, dbo.bc_info.infSummary, dbo.bc_info.infKeyWord, dbo.bc_info.infSource, dbo.bc_info.infAuthor, dbo.bc_info.infContent, dbo.bc_info.infStatus, dbo.bc_info.infApprovedUserID, dbo.bc_info.infCreatorID, dbo.bc_info.infCreateDate, dbo.bc_info.infRedactorID, dbo.bc_info.infUpdateDate,dbo.bc_info.infTop, dbo.bc_info.infIsHotspot, dbo.bc_info.infIsFirstNews, dbo.bc_info.infIsRecommend, dbo.bc_info.infViewCount, dbo.bc_info.infExtInt1, dbo.bc_info.infExtInt2, dbo.bc_info.infExtStr1, dbo.bc_info.infExtStr2, dbo.bc_info.infIsMilitaryHeadlines, dbo.bc_info.infIsVoice, dbo.bc_info.infIsHeadlines, dbo.bc_infotype.iftType

    FROM dbo.bc_info LEFT OUTER JOIN dbo.bc_infotype ON dbo.bc_info.infIftCode = dbo.bc_infotype.iftCode

    ?

    DM8创建视图语句:

    CREATE view "dbo"."vw_info"? as

    SELECT "dbo"."bc_infotype"."iftIfcCode", "dbo"."bc_infotype"."iftName", "dbo"."bc_info"."infID",

    "dbo"."bc_info"."infIftCode", "dbo"."bc_info"."infTitle",

    ?"dbo"."bc_info"."infSubTitle", "dbo"."bc_info"."infCoverImage", "dbo"."bc_info"."infLinkUrl",

    "dbo"."bc_info"."infVideoUrl", "dbo"."bc_info"."infFileUrl", "dbo"."bc_info"."infSummary", "dbo"."bc_info"."infKeyWord", "dbo"."bc_info"."infSource", "dbo"."bc_info"."infAuthor",

    ?"dbo"."bc_info"."infContent","dbo"."bc_info"."infStatus","dbo"."bc_info"."infApprovedUserID", "dbo"."bc_info"."infCreatorID","dbo"."bc_info"."infCreateDate", "dbo"."bc_info"."infRedactorID",

    "dbo"."bc_info"."infUpdateDate", "dbo"."bc_info"."infTop", "dbo"."bc_info"."infIsHotspot", "dbo"."bc_info"."infIsFirstNews","dbo"."bc_info"."infIsRecommend", "dbo"."bc_info"."infViewCount", "dbo"."bc_info"."infExtInt1", "dbo"."bc_info"."infExtInt2", "dbo"."bc_info"."infExtStr1", "dbo"."bc_info"."infExtStr2",

    "dbo"."bc_info"."infIsMilitaryHeadlines", "dbo"."bc_info"."infIsVoice",

    "dbo"."bc_info"."infIsHeadlines", "dbo"."bc_infotype"."iftType"

    FROM????? "dbo"."bc_info" LEFT OUTER JOIN

    ? "dbo"."bc_infotype" ON "dbo"."bc_info"."infIftCode" = "dbo"."bc_infotype"."iftCode"

    我这边经过手动修改sql语句之后再进行执行就可以把视图迁移过去了,迁移之后如下图所示:

    通过登录DM8数据库,可看到相关表和视图已成功迁移过来了。

    上面主要是我这次把数据库从sql server迁移到DM8的一些心得。

    通过这几天的学习和了解,达梦数据库目前已做得很不错了,从使用方式来说,和国外比较知名的sql server、MySql和Oracle数据库的区别也不太大,所以对于有sqlserver、MySql和Oracle数据库使用经验的人来说,也比较容易上手,特别是DM8的管理工具,使用起来非常的方便。同时,对于项目国产化,由于有DM数据迁移工具,给从其它数据库迁移到DM8数据库上提供了很大的方便。

    通过这几天简单的了解,总体来说,DM8还是做得很不错的,希望达梦数据库会越来越好,我们自己的国产数据库会越来越好用,在未来可彻底代替国外的数据库。

    本文地址:https://blog.csdn.net/xwkxwk/article/details/108980707