【问题标题】:Passing variable in XML topology in ODI在 ODI 中的 XML 拓扑中传递变量
【发布时间】:2015-02-08 02:25:06
【问题描述】:

我正在尝试参数化 ODI 中的拓扑连接,以使用变量一一加载相同结构的多个 xml。但我收到未知令牌错误。

Jdbc url :jdbc:snps:xml?f=U:/SOTI_CLOUD/#B.xml

{ #B 是具有文件名的 ODI 变量)

【问题讨论】:

    标签: oracle-data-integrator


    【解决方案1】:

    如果是全局变量,请尝试使用#GLOBAL.B;如果是项目变量,请尝试使用#.B。

    还要检查您对该变量的历史设置。如果设置为“无历史记录”,请确保您在要访问该 XML 文件的同一会话中声明/刷新变量。

    【讨论】:

    • 谢谢,但没有成功。我也尝试使用全局变量和项目变量。在拓扑中使用之前,我也在刷新变量。示例 1:jdbc:snps:xml?f=U:/SOTI_CLOUD/#GLOBAL.PP.xml 示例 2:jdbc:snps:xml?f=U:/SOTI_CLOUD/#PRJGSSP_SOTI_DEVICE_MANAGEMENT.PP.xml
    • 你能在日志级别设置为 6 的情况下运行它吗?你的变量填充正确吗?您可能还需要用单引号将其括起来以将其解释为文本。
    • 通过将其放在单引号中,将其视为字符串并将#PRJGSSP_SOTI_DEVICE_MANAGEMENT.PP 视为文件名,而不是变量的值。
    【解决方案2】:

    只是一种预感……

    对于要在 JDBC URL 中提取的变量,您需要启动一个单独的场景。您的问题可能有所不同,但请确保您有一个带有变量 declare/refresh 的外部循环,并且每当您刷新/递增它时,您都会启动一个单独的场景(不仅仅是一个界面),您可以在其中使用这种构造的 URL 加载数据。

    【讨论】:

    • 谢谢。我试过这种方式,现在没有得到令牌错误。但仍然收到无效模式名称的错误。我也将变量传递给物理模式。 JDBC URL:jdbc:snps:xml?f=/u02/home/odiftp/odiprojects/motsoti/fromsoti/#PRJGSSP_SOTI_DEVICE_MANAGEMENT.SOTI_DEVICE_FILE_NAME.xml&d=/u02/home/odiftp/odiprojects/motsoti/fromsoti/#PRJGSSP_SOTI_DEVICE_MANAGEMENT.SOTI_DEVICE_FILE_NAME. =#PRJGSSP_SOTI_DEVICE_MANAGEMENT.SOTI_DEVICE_FILE_NAME&ro=false 架构(架构):#PRJGSSP_SOTI_DEVICE_MANAGEMENT.SOTI_DEVICE_FILE_NAME 架构(工作架构):#PRJGSSP_SOTI_DEVICE_MANAGEMENT.SOTI_DEVICE_FILE_NAME
    • 我强烈建议每个 XML 物理模式始终使用一个 XML 模式(与 XSD 或 DTD 相反)。根据我的经验,其他任何方法都行不通(或没有多大意义)。
    • 您的意思是说不可能在 ODI 的循环中加载多个名称不同但结构相同的 xml 文件?我们在模式中传递变量名,因为每个文件只与一个模式相关联。
    • dod(断开连接时丢弃)参数设置为 true 时不能工作吗?因此将为每个 XML 文件重建模式。不过,我会尝试对架构名称进行硬编码。
    • 我的观点是 - 如果你有相同的结构 - 为什么你在变量中传递 (XML) 模式名称?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 2017-10-11
    相关资源
    最近更新 更多