【问题标题】:Informatica Target Table KeywordInformatica 目标表关键字
【发布时间】:2015-02-23 15:18:16
【问题描述】:

如何使用 Informatica 将数据加载到名称为 SQL 保留关键字的目标表中?

我正在尝试使用 Informatica 填充名为 Union 的表,但该表失败并出现以下错误:

  • SQL Server 消息:键“Union”附近的语法不正确
  • 数据库驱动程序错误...
  • 函数名称:执行多个
  • SQL 语句:INSERT INTO UNION(UnionCode、UnionName 等)

有人告诉我,将数据库属性更改为使用带引号的标识符可以解决这个问题;但是,我已经尝试过了,它似乎只适用于源,而不是目标。

在任何人陈述明显之前 - 我无法更改目标表的名称。

【问题讨论】:

  • 你能写到视图中吗?

标签: informatica


【解决方案1】:

您能否尝试用引号将会话属性中的表名覆盖为“Union”。

【讨论】:

    【解决方案2】:

    将您的数据加载到具有有效名称的表中,与 union 具有相同的结构。 在该目标的 Post Sql 中,您可以使用所需的任何名称重命名表。

    例如。 点击目标(XUnion), 转到 Post Sql 并将语句放在下面 --

    RENAME XUnion to 'UNION' ; 
    

    【讨论】:

      【解决方案3】:

      如果任何表名或列名包含数据库保留字,例如 MONTH 或 YEAR,则当集成服务对数据库执行 SQL 时,会话将失败并出现数据库错误。您可以在 server/bin 目录中创建和维护保留字文件 reswords.txt。当集成服务初始化会话时,它会搜索 reswords.txt。如果文件存在,则集成服务在对数据库执行 SQL 时会在匹配的保留字周围加上引号。

      使用保留字时,请遵循以下规则和准则。

      集成服务在生成 SQL 以连接到源、目标和查找数据库时搜索保留字文件。

      如果您覆盖源、目标或查找的 SQL,则必须将任何保留字括在引号中。

      您可能需要启用某些数据库,例如 Microsoft SQL Server 和 Sybase,以使用有关带引号的标识符的 SQL-92 标准。使用连接环境 SQL 发出命令。例如,对 Microsoft SQL Server 使用以下命令:

      SET QUOTED_IDENTIFIER ON 
      

      示例 reswords.txt 文件 要使用保留字文件,请创建一个名为 reswords.txt 的文件并将其放在 server/bin 目录中。为您需要为其存储保留字的每个数据库创建一个部分。添加在任何表或列名称中使用的保留字。您不需要在此文件中存储数据库的所有保留字。 reswords.txt 中的数据库名称和保留字不区分大小写。

      以下是一个示例 reswords.txt 文件:

      [Teradata] MONTH DATE INTERVAL [Oracle] OPTION START [DB2] [SQL Server] CURRENT [Informix] [ODBC] MONTH [Sybase]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多