oracle cdc 实时日志在java脚本里处理更新数据的时候,无法找到修改语句中的where条件,请问有没有解决办法?
您好,请您发一下报错日志,和脚本的配置图
日志数据采集上来后我们已经对数据进行了格式化,也打了标签了,原始的where条件是不会传出来的,所以是没有办法得到这条数据原始的where条件是什么来的.
截屏2023-09-15 17.42.56 并没有报错信息,java代码如上,我是根据主键object_id修改数据,监控的日志却取不到object_id的值,java执行脚本里也取不到。
传入参数如下: ETL01:09/14 15:59:25 traceId:6502bd5d8d5cc86365a326a1 =>indoc: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}}
看你的日志数据,cdc监听到的字段object_id是空值,所以你java取到一个空字符串是正常的,你要确定你原始数据有OBJECT_ID字段的值?
是的,这个object_id不在修改内容内,放到where里了,所以没有值。
拿不到where条件的值,要获取object_id的值需要放到列里面,如果同步的目标表不需要该列,在ETL流程中的库表输出自定义配置输出字段即可