数据迁移 | DTS

本文详细介绍了如何使用达梦数据迁移工具DTS进行DM到SQL文本、DM到DM以及Oracle到DM的数据迁移,强调了迁移过程中驱动配置、数据库端口开放以及迁移顺序的重要性,并提供了具体的迁移步骤和示例。
摘要由CSDN通过智能技术生成

本文参考
https://eco.dameng.com/docs/zh-cn/start/tool-dm-migrate.html
https://eco.dameng.com/docs/zh-cn/faq/faq-oracle-dm8-migrate.html
https://eco.dameng.com/docs/zh-cn/faq/faq-import-export.html

概要

DTS是达梦的数据迁移工具,可实现以下几类迁移

源端目标端
DM数据库其他数据库(Oracle、SQLServer、MySQL)
DM数据库DM数据库
DM数据库文件(SQL、TXT、EXCEL等)
其他数据库(Oracle、SQLServer、MySQL)DM数据库
文件(SQL、TXT、EXCEL等)DM数据库

DTS的数据迁移对象可分为两类

  • 数据库(例如:DM、Oracle、MySQL等)
  • 文件(例如:SQL、XML、TXT等)

DTS可迁移上述两种对象之间的数据,具体能迁移哪些数据呢?
在这里插入图片描述
本文将尝试以下三类迁移

  • DM => SQL文本
  • DM => DM
  • Oracle => DM

迁移时注意要点:

  • 连接数据库的驱动要配置好
  • 数据库的端口要开放,避免被防火墙拦截

示例库BOOKSHOP的创建
https://eco.dameng.com/docs/zh-cn/pm/example-description.html#

DM ⇒ SQL文本

使用DTS工具,将某张表导出为SQL文本

./dts

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

输入数据库的IP和端口,以及正确的用户名和密码
在这里插入图片描述注意:

使用dts工具访问数据库,需要配置正确的驱动,此处用默认的驱动。(若默认驱动不可用,则需要解决驱动的问题,以便dts工具能访问源端数据库)

dm的tool目录里,有专门存放jdbc驱动的目录,里面存放了dts工具连接各种数据库所需的驱动(如dts工具连接dm数据库,需要DmJdbcDriver.jar;连接oracle数据库,需要oraclejdbc.jar)

我机器上的jdbc驱动如下:(这些都是安装DM数据库软件后,自带的)
在这里插入图片描述
如果默认驱动用不了的话,需根据数据库类型,准备合适的jdbc驱动,并使用自定义的驱动(即自行指定jdbc的路径及配置)
在这里插入图片描述

准备可用的驱动(以便dts工具连接数据库),url处填写好源端数据库的IP和端口
在这里插入图片描述
注意:
此处需要将DM的表导出成SQL文件,故dts需要与DM8交互。若自带的驱动(DmJdbcDriver.jar)不好使,则需下载可用的驱动

若选择错误的驱动,点击下一步时将报错(此处故意选择连接DM6的驱动Dm6JdbcDriver.jar,用此驱动连接DM8肯定会出错)
在这里插入图片描述
连接数据库失败,错误消息:网络通信异常
很明显,由于驱动错误,dts连不上源库,所以报错为"网络通信异常"
在这里插入图片描述

若默认驱动正确,或解决完驱动问题后,点击下一步
在这里插入图片描述
需要将表RESOURCES.EMPLOYEE的定义与数据导出到SQL文件中,故将SQL文件命名为TB_RESOURCES.EMPLOYEE.sql
在这里插入图片描述
为了简单起见,只导出表RESOURCES.EMPLOYEE,多余的都不选。(想导出其他对象,可勾选上自己测测)
在这里插入图片描述
把要导出的表(RESOURCES.EMPLOYEE)勾上
在这里插入图片描述
【注意】
点击转换按钮后,可控制表导出的内容

  • 表定义
  • 主键
  • 表数据
  • 约束
  • 索引

点击转换按钮后,界面如下
在这里插入图片描述【注意】
迁移的成败与否,很大程度看这里的配置,此处按默认来即可,不做过多讲解和测试(优先注意标红的内容!)

迁移对象、映射关系都选择完毕后,点击下一步
在这里插入图片描述
审阅迁移任务,若无误,则点击"完成",开始迁移
在这里插入图片描述
迁移任务完成后,将显示任务的执行情况(此处的任务都执行成功了)
在这里插入图片描述
若迁移失败,可以查看迁移日志,分析原因
在这里插入图片描述
查看迁移出来的SQL文件

[dmdba@dw1 sqlfile]$ cd /home/dmdba/sqlfile
[dmdba@dw1 sqlfile]$ head -15 TB_RESOURCES.EMPLOYEE.sql 
CREATE TABLE "RESOURCES"."EMPLOYEE"
(
 "EMPLOYEEID" INT IDENTITY(1,1) NOT NULL,
 "NATIONALNO" VARCHAR(18) NOT NULL,
 "PERSONID" INT NOT NULL,
 "LOGINID" VARCHAR(256) NOT NULL,
 "TITLE" VARCHAR(50) NOT NULL,
 "MANAGERID" INT NULL,
 "BIRTHDATE" DATE NOT NULL,
 "MARITALSTATUS" CHAR(1) NOT NULL,
 "PHOTO" IMAGE NULL,
 "HAIRDATE" DATE NOT NULL,
 "SALARY" DEC(19,4) NOT NULL
);

DM ⇒ DM

通过DTS,把示例库BOOKSHOP中的内容,从源库(dm8)迁移到目标库(dm8)

示例库BOOKSHOP的创建
https://eco.dameng.com/docs/zh-cn/pm/example-description.html#

  • 源库
    通过dminit创建了空库,并创建了示例库BOOKSHOP
  • 目标库
    仅通过dminit创建了空库

注意:
由于dts需要与源库和目标库通信,故源库和目标库的端口要开放好,别被防火墙拦截了!

开放端口
https://blog.csdn.net/weixin_41709724/article/details/121236327

检查端口是否通畅(IP为目标IP,端口为目标端口)

telnet IP PORT
正确输出如下
[dmdba@dw1 sqlfile]$ telnet 192.168.1.100 5236
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is '^]'.
Connection closed by foreign host.

新建一个迁移工程
在这里插入图片描述
在这里插入图片描述
输入源端信息(源端IP、数据库端口、数据库用户名、数据库用户口令)
在这里插入图片描述
输入目标端信息(目标端IP、数据库端口、数据库用户名、数据库用户口令)
在这里插入图片描述
【注意 1】
确保数据库的IP、端口正确,且端口没有被防火墙拦截

【注意 2】
确保数据库用户的用户名和口令正确,且权限充足

【注意 3】
确保驱动配置正确,且驱动可用

若上述条件不满足,点击"下一步"将报错,可能如下图所示
在这里插入图片描述
仅迁移模式RESOURCES中的所有表(其余的选项此处暂时不勾选)
在这里插入图片描述
把RESOURCES模式的所有表都勾选上,并点击"转换"
在这里插入图片描述

请按下图进行勾选(否则可能会迁移失败)
在这里插入图片描述

迁移对象和表映射关系勾选完毕后,点击"下一步"
在这里插入图片描述
审阅迁移任务,确认无误后,点击"完成",开始迁移
在这里插入图片描述
迁移任务如下:
在这里插入图片描述

迁移完成后,有2个任务失败了
在这里插入图片描述

下面查看下报错信息
在这里插入图片描述
也可以通过日志,查看错误信息
在这里插入图片描述
【注意】
报错说明创建外键出错了

  • 表"RESOURCES".“EMPLOYEE"的PERSONID列需要参照表"PERSON”.“PERSON"的PERSONID列(即应该先导入表"PERSON”.“PERSON”,再导入表"RESOURCES".“EMPLOYEE”)
  • 表"RESOURCES".“EMPLOYEE_ADDRESS"的ADDRESSID列需要参照表"PERSON”.“ADDRESS"的ADDRESSID列(即应该先导入表"PERSON”.“ADDRESS”,再导入表"RESOURCES".“EMPLOYEE_ADDRESS”)

在这里插入图片描述

在这里插入图片描述

那么,先把PERSON模式中的所有表,从源端迁到目标端,再把上面迁移失败的两个约束补上
在这里插入图片描述
迁移对象和表映射关系与迁移RESOURCES模式相同(此处跳过)
由于模式PERSON的表没有约束和索引,故迁移过程没有任何报错
在这里插入图片描述

现在,再迁移RESOURCES模式缺少的两个约束
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
迁移对象和表映射关系勾好后,点击"下一步"
在这里插入图片描述

迁移成功
在这里插入图片描述
注意:
若有失败的任务(例如EMPLOYEE_ADDRESS表的外键迁移成功,但EMPLOYEE表的外键迁移失败),就把失败的任务再单独执行一次(单独迁移EMPLOYEE的外键)

若不勾选"保留引用表原有模式信息",创建约束时,若引用表不在模式RESOURCE下,将无法创建。(此处的引用表为PERSON.ADDRESS,故无法创建引用该表的约束)
在这里插入图片描述

因为没有RESOURCE.ADDRESS表,故约束创建失败
在这里插入图片描述

总结:
表的迁移顺序很重要,先迁移引用表
对于单表,先迁移表定义,再迁移数据,最后迁移约束和索引

Oracle ⇒ DM

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值