2014-09-03 11 views
0

我试图将ODI步骤错误消息插入到Oracle表中。 我使用<%=odiRef.getPrevStepLog("MESSAGE")%>捕获了错误消息。如何将ODI步骤错误消息插入到Oracle表中,如果错误消息有单引号和冒号

ODI-1226: Step PRC_POA_XML_synchronize fails after 1 attempt(s). 
ODI-1232: Procedure PRC_POA_XML_synchronize execution fails. 
ODI-1227: Task PRC_POA_XML_synchronize (Procedure) fails on the source XML connection XML_PFIZER_LOAD_POA_DB_DEV. 
Caused By: java.sql.SQLException: class java.sql.SQLException 
oracle.xml.parser.v2.XMLParseException: End tag does not match start tag 'tns3:ContctID'. 
    at com.sunopsis.jdbc.driver.xml.SnpsXmlFile.readDocument(SnpsXmlFile.java:459) 
    at com.sunopsis.jdbc.driver.xml.SnpsXmlFile.readDocument(SnpsXmlFile.java:469) 

当我尝试插入表这一点,我发现了以下错误:

Missing IN or OUT parameter at index:: 1 

substrreplace尝试。没有任何工作,因为我们有一个单引号'tns3:ContctID'的错误消息的中间。

有什么方法可以将其插入表中吗?

+2

您如何尝试将其插入表中,您能否给出一些片段? – 2014-09-03 08:46:31

回答

0

,如果你想使用纯Java BeanShell中,你已经给得太少细节,以获得短期和直接的答案,这是一个艰难的一个,像

  • 你怎么尝试插入源这个(命令/ target,仅限于bean shell,Oracle SQL + jBS,jython,groovy等)

这里的问题不仅是引号,而且还有换行符。 要替换他们的是更加困难,因为每个解析步<%<?<@需要不同的技巧来定义这些文字

,如果你写的Jython任务将日志数据(Jython的技术)什么会为确保工作。 有可能会使用Python能力多字符串字面 简单:

⋮ 
err_log = """ 
      <?=odiRef.getPrevStepLog("MESSAGE")?> 
      """ 
⋮ 
0

我遇到这个错误几天就回来。我在ODI施加下文提到的解决方案......

使用 - Q '#<%= odiRef.getPrevStepLog( “MESSAGE”)%>#' 这将难逃倒逗号(')的INSERT语句。

我在我的代码中使用这一点,它是工作的罚款:)

例如 - 选择双反“testing'abcd”; 此查询将在下面给出错误 “ORA-01756:引用字符串没有正确结束”,从双

选择Q '#testing'abcd#'; 此查询没有提供任何错误,我们在SQL Developer中得到以下响应 testing'abcd