|
【环境准备】 ETL3, 数据库:DM7, 外置数据库模式(DM7, DMETL用户模式管理) 数据源: BOOKSHOP - 模拟源端 DMETL_JX - 模拟镜像库 DMETL_SAMPLE - 模拟目标端 变量: rowPerson rowDepartment TEST_NUM |
1,镜像同步
表抽取模式:全量抽取
BOOKSHOP(PERSON, DEPARTMENT) è DMETL_JX(JX_PERSON, JX_DEPARTMENT)

2, 同步表
2.1 源表/目的表结构
DMETL_JX: PERSONè DMETL_SAMPLE:P_PERSON
|
CREATE TABLE "DMETL_JX"."PERSON" ( "PERSONID" INT IDENTITY(1, 1) NOT NULL, "SEX" CHAR(1) NOT NULL, "NAME" VARCHAR(50) NOT NULL, "EMAIL" VARCHAR(50), "PHONE" VARCHAR(25), CLUSTER PRIMARY KEY("PERSONID")) STORAGE(ON "DMETL_JX", CLUSTERBTR) ; |
|
CREATE TABLE "DMETL_SAMPLE"."P_PERSON" ( "P_ID" INT IDENTITY(1, 1) NOT NULL, "P_SEX" CHAR(1) NOT NULL, "P_NAME" VARCHAR(50) NOT NULL, "P_EMAIL" VARCHAR(50), "P_PHONE" VARCHAR(25), "P_FRIENDID" INTEGER, CLUSTER PRIMARY KEY("P_ID")) STORAGE(ON "DMETL_SAMPLE", CLUSTERBTR) ; -- P_FRIENDID 为转换过程中派生的新列,目标库源表中没有此列。 |
2.2 转换-MD5增量_PERSON

【表数据源】:
DMETL_JX.PERSON, 第一次增量同步抽取数据
【列映射】:


【派生列1(新增列)】:

【派生列2】:
列内容根据表达式替换

【查找替换】:

【script脚本】:
用于变量自增, 后续需要时在作业中判断

【表目的】:
DMETL_SAMPLE.P_PERSON

与JX_PERSON的镜像同步对比结果,可直观地区分“表目的”与“表目的(插入更新)”的区别。
4, 作业
同步_PERSON

【设置变量】
这里的变量在转换中设置了自增。
【清空镜像表JX_PERSON】
清空镜像表,重新同步
【镜像表JX_PERSON同步】
从数据库源端同步到镜像
【MD5增量_PERSON】
从镜像表到目的端的MD5增量同步。
【条件线】
通过对变量的判断,来决定是否执行最后SQL中的操作。
5,元数据导入导出

6,总结
6.1, 表目的
表目的组件的功能是将输入的数据装载到表中,表目的组件的输入列应该与表中的列名匹配,输入数据中的列如果在目的表中没有匹配的列,则该列的数据会被丢弃。对于全量抽取表目的只执行插入操作,对于增量抽取,表目的会根据数据的类型执行插入、删除和更新操作。
6.2 表目的插入更新
与 表目的唯一差别在于, 全量抽取表目的的插入操作。表目的全量抽取表目的只支持插入操作; 表目的插入更新, 会根据设置的插入更新查找列在目的表中查找目的表记录,如果能找到,则会对目的表的记录进行更新,否则进行插入操作。
---------------------------------------------------------------------------------------------------------------------------------------
更多达梦数据库解决方案,可访问如下地址:
https://eco.dameng.com/
本文介绍了在ETL3环境中,使用DM7数据库进行全量和MD5增量同步的方法。首先,详细展示了数据源、镜像库和目标库的设置,以及PERSON和DEPARTMENT表的结构。接着,阐述了转换过程,包括派生列和查找替换,并提供了用于变量自增的script脚本。然后,通过作业流程演示了如何进行插入更新操作,以及清空和同步镜像表。最后,总结了表目的组件在全量和增量同步中的作用。整个过程旨在确保数据的一致性和准确性。
464

被折叠的 条评论
为什么被折叠?



