历史版本19 :数据同步-写入方式 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本

FineDataLink版本
功能说明
--
4.0.181)移除了「比对字段」

2)写入方式「直接将数据写入目标表」,更新为「追加写入数据」

4.0.28
  • 调整「写入方式」和「字段映射」的顺序

  • 写入方式优化,分为三种:直接将数据写入目标表清空目标表,再写入数据基于标识字段,追加/更新/删除数据

4.0.29
  • 主键冲突策略中主键相同,停止写入并报错修改为主键相同,记录为脏数

  • 写入方式为「清空目标表,再写入数据」时逻辑优化

4.1.9.1写入方式基于标识字段,追加/更新/删除数据修改为「基于标识字段,新增/修改/删除数据」

1.2 功能简介

本文介绍「数据同步」设置写入方式或者使用「数据转换-DB表输出」设置写入方式时配置项说明。

「写入方式」界面如下图所示:

16.png

写入方式有三种:

注1:不同数据库支持的写入方式有部分限制,具体请参见:定时任务数据源功能限制说明

注2:4.1.3 及之后版本,目标表为 Hive、星环 TRANSWARP INCEPTOR 时,支持分区写入。详情请参见:读取、创建、写入分区表

写入方式
说明效果示例
直接将数据写入目标表目标表无物理主键且未配置逻辑主键映射:直接将数据写入目标表不同写入方式效果说明

目标表有物理主键或已配置逻辑主键映射:基于主键比对数据行的差异:主键相同、主键不同

1)主键不同的数据行:追加写入

2)主键相同的数据行,提供三种写入策略:

  • 主键相同,覆盖目标表的数据

  • 主键相同,忽略输入源的数据

  • 主键相同,记录为脏数据

清空目标表,再写入数据直接先把目标表清空掉,然后再写入数据;有无主键均可以选择
基于标识字段,新增/修改/删除数据

1)目标表无物理主键:写入方式中勾选了「更新」或「删除」时,「主键映射」处不允许为空,需设置逻辑主键

2)目标表有物理主键或已配置逻辑主键映射,识别数据行的标识:相同、新增、修改、删除:


  • 相同的数据行:忽略

  • 新增的数据行:新增

  • 修改的数据行:更新

  • 删除的数据行:删除

2. 直接将数据写入目标表编辑

1724224174905434.png

2.1 主键映射

建立「来源端-目标端」的数据行对应关系,设置步骤如下图所示:

18.png

1)目标表中若存在物理主键/自动建表配置了主键,将直接根据目标表物理主键,自动生成主键映射行以确定数据唯一性。

2)目标表中若无物理主键:

  • 目标表是自动建表生成的:自动建表时,在「字段映射」处可以手动设定单个或多个字段为物理主键,写入方式Tab中,主键映射处自动显示已设置好的物理主键。

  • 目标表是已存在表:「主键映射」处,支持选择字段作为逻辑主键映射以确定数据唯一性;若不设置逻辑主键,直接追加写入数据。

2.2 主键冲突策略

注:目标端为 Hive 时,不支持「主键冲突策略」。

1724224427262542.png

满足以下任一条件,需要选择「主键冲突策略」:

  • 目标表存在物理主键。

  • 目标表不存在物理主键,但配置了逻辑主键。

主键冲突策略有三种:

  • 主键相同,覆盖目标表的数据。

  • 主键相同,忽略输入源的数据。

  • 主键相同,记录为脏数据。

3. 清空目标表,再写入数据编辑

1724224475857081.png

直接先把目标表清空掉,然后再写入数据;有无主键均可以选择。

目标端为简道云时,不支持该写入方式。

4.0.29 以及之后的版本:

1)当来源表没有主键时,目标表存在主键,进行清表重写时,先清空目标表,再对目标表进行写入;

2)如果此时来源表存在两条主键相同的数据,后一条会覆盖前一条的记录;

4. 基于标识字段,新增/修改/删除数据编辑

4.1 功能说明

注1:目标端为 Hive 时,不支持该写入方式。

注2:新增/更新/删除可勾选任意一个或多个。

标识字段/标识值:

1)通过标识字段和标识值筛选出需要新增/更新/删除的数据。

2)若使用「数据比对+DB表输出算子」实现数据,「DB表输出算子中的标识字段则自动读取 fdl_comparison_type 作为标识字段,且自动读取标识字段的值作为标识值。

3)表输出只选择新增/更新/删除其中一个时,「标识字段」可不填,不填则对读取的所有数据进行新增或更新或删除。

主键映射:

详情请参考本文 2.1 节说明。

1)出现条件:写入方式中勾选了「更新」或「删除」。

2)写入方式中勾选了「更新」或「删除」时,「主键映射」处不允许为空。

4.2 最佳实践

1)通常数据比对+DB 表输出结合使用,详情参见:数据比对典型示例

2)单个数据同步节点使用场景:

  • 用户希望将筛选出的数据,只做新增/更新/删除操作。

  • 用户数据已经有了标识字段和标识值,需要对数据进行新增/更新/删除操作。

详情请参见:数据同步-基于标识字段,新增/更新/删除数据

5. 注意事项编辑

比如来源表和目标表都有 D 列的部分数据为 NULL:

设置「写入方式」为追加写入且 A、B、C、D 都是逻辑主键,如下图所示:

运行后:若 D 列不为 NULL,若主键冲突则覆盖目标表数据;若 D 列为 NULL,若主键冲突则不会遵循覆盖逻辑,会追加写入。