1. 概述
本文介绍「数据同步」设置写入方式或者使用「数据转换-DB表输出」设置写入方式时配置项说明。
「写入方式」界面如下图所示:
写入方式有三种:
注1:不同数据库支持的写入方式有部分限制,具体请参见:定时任务数据源功能限制说明
注2:4.1.3 及之后版本,目标表为 Hive、星环 TRANSWARP INCEPTOR 时,支持分区写入。详情请参见:读取、创建、写入分区表
写入方式 | 说明 |
---|---|
追加写入目标表 | 目标表无物理主键且未配置逻辑主键映射:直接追加写入数据 |
目标表有物理主键或已配置逻辑主键映射:基于主键比对数据行的差异:主键相同、主键不同 1)主键不同的数据行:追加写入 2)主键相同的数据行,提供三种写入策略:
| |
清空目标表,再写入数据 | 直接先把目标表清空掉,然后再写入数据;有无主键均可以选择 |
追加/更新/删除数据 | 1)目标表无物理主键:写入方式中勾选了「更新」或「删除」时,「主键映射」处不允许为空,需设置逻辑主键 2)目标表有物理主键或已配置逻辑主键映射,识别数据行的标识:相同、新增、修改、删除:
|
2. 追加写入目标表
2.1 主键映射
建立「来源端-目标端」的数据行对应关系,设置步骤如下图所示:
1)目标表中若存在物理主键/自动建表配置了主键,将直接根据目标表物理主键,自动生成主键映射行确定数据唯一性。
2)目标表中若无物理主键:
目标表是自动建表生成的:自动建表时,在「字段映射」处可以手动设定单个或多个字段为物理主键。
目标表是已存在表:「主键映射」处,选择字段作为逻辑主键映射确定数据唯一性,若为空直接追加写入数据。
2.2 主键冲突策略
注:目标端为 Hive 时,不支持「主键冲突策略」。
满足以下任一条件,需要选择「主键冲突策略」:
目标表存在物理主键。
目标表不存在物理主键,但配置了逻辑主键。
主键冲突策略有三种:
主键冲突,覆盖目标表的数据。
主键冲突,忽略输入源的数据。
主键冲突,停止写入并报错。
3. 清空目标表,再写入数据
直接先把目标表清空掉,然后再写入数据;有无主键均可以选择。
目标端为简道云时,不支持该写入方式。
4.0.29 以及之后的版本:
1)当来源表没有主键时,目标表存在主键,进行清表重写时,先清空目标表,再对目标表进行写入;
2)如果此时来源表存在两条主键相同的数据,后一条会覆盖前一条的记录;
4. 插入/更新/删除数据
4.1 功能说明
注1:目标端为 Hive 时,不支持该写入方式。
注2:追加/更新/删除可勾选任意一个或多个。
标识字段/标识值:
1)通过标识字段和标识值筛选出需要追加/更新/删除的数据。
2)若使用了「数据比对」算子,则自动读取 fdl_comparison_type 作为标识字段,且自动读取标识字段的值作为标识值。
3)表输出只选择追加/更新/删除其中一个时,「标识字段」可不填,不填则对读取的所有数据进行追加或更新或删除。
主键映射:
详情请参考本文 2.1 节说明。
1)出现条件:写入方式中勾选了「更新」或「删除」。
2)写入方式中勾选了「更新」或「删除」时,「主键映射」处不允许为空。
4.2 最佳实践
1)通常数据比对+DB 表输出结合使用,详情参见:数据比对典型示例
2)单个数据同步节点使用场景:
用户希望将筛选出的数据,只做追加/更新/删除操作。
用户数据已经有了标识字段和标识值,需要对数据进行追加/更新/删除操作。
详情请参见:数据同步-基于标识字段,追加/更新/删除数据