反馈已提交

网络繁忙

DB输出(事务)

  • 文档创建者:Roxy
  • 历史版本:4
  • 最近更新:Roxy 于 2024-08-02
  • 1. 概述

    1.1 版本

    FineDataLink 版本
    功能变动
    4.1.5.2-
    4.1.5.5若「写入方式」设置为直接将数据写入目标表,在设置主键冲突策略中,支持设置「主键相同,覆盖目标表数据」
    4.1.8.1

    修复:多个数据同步节点并行执行时,如果使用事务输出至Oracle,并发写入同一张表时,执写入数据无异常。

    4.1.10.2
    • Oracle支持主键冲突策略

    • 支持标准的并发读取功能

    • 支持 GBase8a 数据库

    4.1.11.1

    Greenplum 使用事务输出算子时,如果去向表有主键且写入方式为冲突覆盖,并行装载阶段速度会大幅上升

    1.2 应用场景

    1)用户在定时同步向目标库写入数据时,希望可以将单次当前来源端的所有数据,放到同一个事务内装载:

    • 要么都成功,正常提交事务,更改目标表数据;

    • 要么都失败,事务回滚,对目标表不产生影响。

    2)在定时任务同步完成后,可以将当次写入的统计数据写到自定义的表中,以方便后续校验数据。

    1.3 功能简介

    • 定时任务写入数据库时支持失败回滚,即任务执行失败后不会对目标表产生影响。

    • 定时任务写入数据库时支持前置处理和后置处理,并支持将这些处理逻辑与核心写入操作一起封装为事务,一同支持失败回滚。

    1.4 前提条件

    使用该算子需要增加 FineDB 配置,在 fine_conf_entity 数据表中增加配置。

    请联系技术支持操作,技术支持联系方式:前往「服务」,选择「在线支持」、电话「400-811-8890」。

    2. 使用限制

    支持范围
    写入方式主键映射主键冲突策略
     Oracle 

    直接将数据写入目标表(4.1.5.2 开始支持)

    清空目标表,再写入数据(4.1.5.2 开始支持)

    基于标识字段,追加/更新/删除数据(4.1.10.2 开始支持)

    已配置物理主键:直接使用物理主键

    未配置物理主键:支持选择字段作为逻辑主键(4.1.10.2 开始支持)

    主键相同,覆盖目标表的数据(4.1.10.2 开始支持)

    主键相同,忽略目标表的数据(不支持)

    主键相同,节点运行报错

    Greenplum 数据源(Greenplum 仅支持并行装载模式)

    直接将数据写入目标表

    清空目标表,再写入数据

    基于标识字段,追加/更新/删除数据(4.1.10.2 开始支持)

    已配置物理主键:直接使用物理主键

    未配置物理主键:支持选择字段作为逻辑主键

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

    主键相同,忽略目标表的数据(不支持)

    主键相同,节点运行报错

    Gbase8a

    (4.1.10.2 开始支持)

    直接将数据写入目标表

    清空目标表,再写入数据

    基于标识字段,追加/更新/删除数据

    未配置物理主键:支持选择字段作为逻辑主键

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

    主键相同,忽略目标表的数据(不支持)

    主键相同,节点运行报错

    当前支持在「数据同步-写入方式」和「数据转换-DB表输出(事务)」算子中使用。

    若设置直接将数据写入目标表,在设置主键冲突策略中,支持设置「主键相同,节点运行报错」和「主键相同,覆盖目标表数据」。

    3. 功能说明

    3.1 事务控制

    事务控制配置项如下所示:

    功能
    说明
    前置 SQL 
    支持使用「@temp_tbl_nm_full」引用装载时使用的中间表名,可以使用此参数定义SQL查询,其他事务中引用此表名参数时,值为空字符串。
    后置 SQL 支持使用「@temp_tbl_nm_full」引用装载时使用的中间表名,可以使用此参数定义SQL查询,其他事务中引用此表名参数时,值为空字符串。

    支持使用的参数:

    参数说明
    @temp_tbl_nm_full带有引号和完整SCHEMA的中间表名
    @temp_schema_nm无引号的中间SCHEMA名
    @temp_tbl_nm 无引号的中间表名
    @target_tbl_nm_full 带有引号和完整SCHEMA的目标表名
    @target_schema_nm无引号的目标SCHEMA名
    @target_tbl_nm 无引号的目标表名

    3.2 并行取数

    4.1.10.2 以及之后的版本,若来源端选择了并行取数(3.2.4节),去向端选择事务输出,默认进行并行取数。

    4. 操作步骤

    例如用户需要将数据同步到 Oracle 时支持失败回滚,并需要在同步成功时,记录本次装载的最大时间到指定的数据表中,以便进行增量同步或者数据校验。

    4.1 读取数据

    新增定时任务,在数据转换节点中新增 DB 表输入算子,设置数据来源,如下图所示:

    点击数据预览即可看到读取数据,如下图所示:

    4.2 设置写入数据库前置后置

    新增 DB表输出(事务) 算子,设置输出数据库的相关信息,如下图所示:

    设置写入方式、主键并在事务控制下设置前置 SQL 和后置 SQL,如下图所示:

    由于示例想要在同步成功时,记录本次装载的最大时间到指定的数据表中,因此设置后置 SQL:

    INSERT INTO "ANONYMOUS"."duandian"(TIME) 
    SELECT MAX(合同签约时间) AS TIME FROM @temp_tbl_nm_full;

    注1:SQL 含义为将本次执行数据表的最大「合同签约时间」从中间表中取出,并写入至指定的数据表「duandian」的 TIME 字段中。

    注2:中间表与目标表字段相同,作为写入数据回滚的中间存放表,此处@temp_tbl_nm_full 为引用中间表。

    4.3 运行任务

    运行任务后,若执行成功,即可看到将指定数据同步写入至目标数据库,如下图所示:

    同时最大合同签约时间写入指定的 duandian 表中,如下图所示:

    若执行失败,则该批量数据均不会被写入指定数据库,实现失败回滚。

    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持