logo
社区首页 / 全域数据集成平台 / 问题详情
标题
java执行脚本中如何获取update日志中的where条件?
0
用户头像
楼主:测试人员
主题:2     回复:4     获赞:0 注册日期:2023-09-13

oracle cdc 实时日志在java脚本里处理更新数据的时候,无法找到修改语句中的where条件,请问有没有解决办法?

---------------------------------------------------
签名:
共9回答
1
用户头像
回答者: RC-巫灵培
获赞:22 注册于:2023-07-20 回答于 2023-09-15 17:40:45 #1

您好,请您发一下报错日志,和脚本的配置图

---------------------------------------------------
签名:
0
用户头像
回答者: 管理员
获赞:142 注册于:2017-07-02 回答于 2023-09-15 17:42:16 #2

日志数据采集上来后我们已经对数据进行了格式化,也打了标签了,原始的where条件是不会传出来的,所以是没有办法得到这条数据原始的where条件是什么来的.

---------------------------------------------------
签名:我是一个码农...
0
用户头像
回答者: 测试人员
获赞:0 注册于:2023-09-13 回答于 2023-09-15 17:48:04 #3

截屏2023-09-15 17.42.56图片alt 并没有报错信息,java代码如上,我是根据主键object_id修改数据,监控的日志却取不到object_id的值,java执行脚本里也取不到。

传入参数如下: ETL01:09/14 15:59:25 traceId:6502bd5d8d5cc86365a326a1 =&gtindoc:Document{{data=[ Document{{AGENT_ID=null, CHU_SHI_=null, APPROVAL_USER_ID=whzhangjinping, AGENT_NAME=null, STATE=1, APPROVAL_USER_NAME=张, PROVIDER_ID=null, APPROVAL_OPINION_IMG_ID=null, APPROVAL_POSITION=null, INSTANCE_ID=null, CHU_SHI_ID=jtgsld, OBJECT_ID=, P_TAG_IUD=U, IS_AGREE=null, TEXT_FIELD=qian_fa, WORKITEM_ID=null, APPROVAL_DATE=2023-09-14 00:00:00.000, LEADER_APPROVAL_DATE=null, ATTACHMENT_FILE_NAME=null, DEPART_LEVEL=0, ACTIVITY_CODE=null, DISPLAY_NAME=null, ATTACHMENT_FILE_ID=null, OPTIONAL_FEEDBACK_COMMENT=null, CHU_SHI_NAME=领导, APPROVAL_DEPARTMENT_ID=jtgsld, APPROVAL_DEPARTMENT_INFO=null, COMMENT_BATH=null, MOBILE_IS_SHOW=null, DOCUMENT_ID=26dff15e6a674da3944e62f42c7c2753, DEPART_POST_SORT_NUMBER=1, APPROVAL_DEPARTMENT=领导, WAIT_DO_OR_READ=null, APPROVAL_STATE=null, DEPART_SORT_NUMBER=001001}}, Document{{AGENT_ID=null, CHU_SHI_=null, APPROVAL_USER_ID=whzhangjinping, AGENT_NAME=null, STATE=1, APPROVAL_USER_NAME=张, PROVIDER_ID=null, APPROVAL_OPINION_IMG_ID=null, APPROVAL_POSITION=null, INSTANCE_ID=null, CHU_SHI_ID=jtgsld, OBJECT_ID=, P_TAG_IUD=U, IS_AGREE=null, TEXT_FIELD=qian_fa, WORKITEM_ID=null, APPROVAL_DATE=2023-09-14 00:00:00.000, LEADER_APPROVAL_DATE=null, ATTACHMENT_FILE_NAME=null, DEPART_LEVEL=0, ACTIVITY_CODE=null, DISPLAY_NAME=null, ATTACHMENT_FILE_ID=null, OPTIONAL_FEEDBACK_COMMENT=null, CHU_SHI_NAME=领导, APPROVAL_DEPARTMENT_ID=jtgsld, APPROVAL_DEPARTMENT_INFO=null, COMMENT_BATH=null, MOBILE_IS_SHOW=null, DOCUMENT_ID=26dff15e6a674da3944e62f42c7c2753, DEPART_POST_SORT_NUMBER=1, APPROVAL_DEPARTMENT=领导, WAIT_DO_OR_READ=null, APPROVAL_STATE=null, APPROVAL_OPINION_INPUT=第一次, DEPART_SORT_NUMBER=001001}} ], primaryKeys=, tableName=OA_OPINION, P_ENDFLAG=1}}

---------------------------------------------------
签名:
0
用户头像
回答者: 管理员
获赞:142 注册于:2017-07-02 回答于 2023-09-15 17:53:11 #4

图片alt 看你的日志数据,cdc监听到的字段object_id是空值,所以你java取到一个空字符串是正常的,你要确定你原始数据有OBJECT_ID字段的值?

---------------------------------------------------
签名:我是一个码农...
0
用户头像
回答者: 测试人员
获赞:0 注册于:2023-09-13 回答于 2023-09-19 14:56:38 #5

是的,这个object_id不在修改内容内,放到where里了,所以没有值。

---------------------------------------------------
签名:
0
用户头像
回答者: 李炳强
获赞:13 注册于:2023-04-10 回答于 2023-09-19 15:04:14 #6

拿不到where条件的值,要获取object_id的值需要放到列里面,如果同步的目标表不需要该列,在ETL流程中的库表输出自定义配置输出字段即可

---------------------------------------------------
签名: