反馈已提交

网络繁忙

事务控制示例

  • 文档创建者:Wendy123456
  • 历史版本:2
  • 最近更新:Wendy123456 于 2025-06-26
  • 1. 概述

    1.1 应用场景

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

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

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

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

    1.2 实现思路

    4.2.7.4 及之后版本,数据同步节点/DB表输出算子中,使用「事务控制功能。

    2. 操作步骤

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

    2.1 读取数据

    1)新建定时任务。

    2)拖入「数据同步节点,读取来源表数据。如下图所示:

    24.png

    点击「数据预览」可查看取出的数据:

    29.png

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

    1)点击「数据去向与映射Tab,设置目标表。如下图所示:

    28.png

    2)点击「写入方式Tab,设置写入方式、主键,并在事务控制下设置前置 SQL 和后置 SQL。如下图所示:

    30.png

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

    INSERT INTO "HR"."DUANDIAN"(TIME) 
    SELECT MAX(录入时间) AS TIME FROM @temp_tbl_nm_full;

    注1:SQL 含义为将本次执行数据表的最大「录入时间」从中间表中取出,并写入至指定的数据表「DUANDIAN」的 TIME 字段中;DUANDIAN 表需要用户自己准备。

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

    2.3 效果查看

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

    1750919718588111.png

    2)录入时间的最大值也记录到 DUANDIAN 表中。如下图所示:

    1750919772864882.png

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

    33.png





    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

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

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

    不再提示

    10s后关闭



    AI

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