在工作中要实现 Oracle 数据库之间的记录传递,于是使用 Kattle 工具实现此同步功能,主要设计过程如下图:
我们先看下整个作业过程,主要是通过建立三个转换来实现:
一、获取最近的传输标识;
A、获取 PUR_ORDER_TRAINMIT_LOG 表中 CREDATE_FLG 字段,记录下最后一次同步的增量时间点
SELECT NVL(MAX(CREDATE_FLG),'2023-05-18 00:00:00') AS LAST_KEEPDATE_FLG FROM PUR_ORDER_TRAINMIT_LOG
B、将 CREDATE_FLG 字段值作为公共变量,后续的第二个“同步传输数据”转换环节会使用到它
二、同步传输数据;
A、获取本次要同步的记录,利用 ${LAST_KEEPDATE_FLG} 公共变量
SELECT INOUTID,SALESID,CREDATE,KEEPDATE,CUSTOMID,GOODSID,
GOODSNAME,
GOODSTYPE,GOODSUNIT,APPROVEDOCNO,BARCODE,
FACTORYNAME,GOODSQTY,UNITPRICE,TOTAL_LINE,PRODDATE,INVALIDDATE,TAXRATE
FROM ZX_DEALING_GOODS_SADTL_V
WHERE GOODSQTY>0 AND KEEPDATE > TO_DATE('${LAST_KEEPDATE_FLG}','yyyy-MM-dd HH24:mi:ss')
注:替换 SQL 语句里的变量,此项打勾。
B、同步记录
注:如果记录中 INOUTID 存在一条或多条记录,那么它会新增一条记录,然后更改相同 INOUTID 的记录
三、保存当次同步信息;
A、记录下本次同步的时间点 MAX_KEEPDATE ,并作为公共变量
SELECT TO_CHAR(NVL(MAX(KEEPDATE),TO_DATE('2023-05-18 00:00:00','yyyy-MM-dd HH24:mi:ss')),'yyyy-MM-dd HH24:mi:ss') AS MAX_KEEPDATE FROM PUR_ORDER_TRAINMIT
B、 保存本次同步的时间点
注: 1、语句中的参数变成了 ? , 要记得将 “执行每一行?”、“变量替换”这两项务必打勾;2、点击“获取字段”按钮,将填充左下方的“参数”列表栏,我们看到存在了一个 MAX_KEEPDATE 参数,如果存在多个参数的话,可能通过拖放来调整排列位置,以便于与上面 SQL 语句的参数位置一致。
标签:00,同步,记录,MAX,数据库,KEEPDATE,FLG,Kattle From: https://www.cnblogs.com/totomylike/p/17443173.html