今天配置了个ogg的一个进程,之前也配置不少次,但是这次搞得有点无语了
问题需求
需求是更改一个字段的值,status列,如果值为ACTIVE则目标端设置为1,其他设置为0
这个可以用ogg的多个内置函数可以实现
主要是用了IF CASE
报错如下:
2024-01-03 13:26:16 INFO OGG-06505 MAP resolved (entry token_service_provider.primary_account_number): map "token_service_provider"."primary_account_number",target "sh ell_token"."TS_PAN" colmap(ORI_PAN_ID=PRIMARY_ACCOUNT_NUMBER_ID, PAN=PAN, PAN_EXPIRY_DATE=PAN_EXPIRY_DATE, CREATE_TIME=CREATION_DATE, STATUS =@CASE (STATUS,"ACTIVE",1,"INAC TIVE",0,0)). 2024-01-03 13:26:16 INFO OGG-02756 The definition for table token_service_provider.primary_account_number is obtained from the trail file. 2024-01-03 13:26:16 INFO OGG-01298 Column function diagnostic message: could not find column "ACTIVE". ...@CASE (STATUS,"ACTIVE",1,"INAC... ^ Error in COLMAP clause. Invalid column mapping function or argument found in the COLMAP clause.. Source Context : SourceModule : [er.mapping] SourceID : [er/mapping.cpp] SourceMethod : [get_map_entry] SourceLine : [3089] ThreadBacktrace : [16] elements : [/u01/ogg/libgglog.so(CMessageContext::AddThreadContext())] : [/u01/ogg/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...))] : [/u01/ogg/libgglog.so(_MSG_String(CSourceContext*, int, char const*, CMessageFactory::MessageDisposition))] : [/u01/ogg/replicat(get_map_entry(ggs::gglib::ggunicode::UString const&, int, wc_def*, ObjectMetadataRequest const&, unsigned int, unsigned int, ggs::gglib::ggmetadata::MetadataContext&, ggs::gglib::ggmetadata::TableManager&, unsigned int, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReade r*, bool, bool, bool))] : [/u01/ogg/replicat(wc_def::resolve_wc_entry(ObjectMetadataRequest const&, int, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1>*, ggs::gglib::ggm etadata::MetadataContext&, ggs::gglib::ggmetadata::TableManager&, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*))] : [/u01/ogg/replicat(WILDCARD_check_table(ObjectMetadataRequest const&, bool, bool, unsigned int, ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1>* , ggs::gglib::ggmetadata::TableManager&, ggs::gglib::ggmetadata::CTblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*, bool, ggs::gglib::gglcr::CommonLCR*))] : [/u01/ogg/replicat(ggs::er::ERContext::findSourceMetadata(ggs::gglib::ggapp::CQualDBObjName<(DBObjType)1> const&, int, ggs::gglib::ggmetadata::C TblMetadata*, ggs::gglib::ggmetadata::CMetadataReader*, bool))] : [/u01/ogg/replicat(ggs::gglib::ggapp::ReplicationContext::sourceMetadataLookup(ggs::gglib::gglcr::CommonLCR const*))] : [/u01/ogg/replicat(ggs::er::ReplicatContext::processReplicatLoop())] : [/u01/ogg/replicat()] : [/u01/ogg/replicat(ggs::gglib::MultiThreading::MainThread::ExecMain())] : [/u01/ogg/replicat(ggs::gglib::MultiThreading::Thread::RunThread(ggs::gglib::MultiThreading::Thread::ThreadArgs*))] : [/u01/ogg/replicat(ggs::gglib::MultiThreading::MainThread::Run(int, char**))] : [/u01/ogg/replicat(main)] : [/lib64/libc.so.6(__libc_start_main)] : [/u01/ogg/replicat()] 2024-01-03 13:26:16 ERROR OGG-00919 Error in COLMAP clause. *********************************************************************** * ** Run Time Statistics ** * ***********************************************************************
问题处理
更改函数
后来将case更换成if
STATUS = @IF(@STREQ(STATUS,“ACTIVE”),1,0)
还是报如上的错误
2024-01-03 13:40:25 INFO OGG-01298 Column function diagnostic message: could not find column "ACTIVE". ...@IF(@STREQ(STATUS,"ACTIVE"...
更改引号
后来查了查
发现ogg的配置从12c开始,双引号改成单引号
更改之后正常运行
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




