Informatica目标表关键字

时间:2013-10-24 15:33:00

标签: informatica

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

我遇到的情况是我尝试使用Informatica来填充一个名为 Union 的表,该表失败并出现以下错误:

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

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

在有人说明显之前 - 我无法更改目标表的名称。

3 个答案:

答案 0 :(得分:0)

是否可以尝试使用引号覆盖会话属性中的表名作为“Union”。

答案 1 :(得分:0)

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

前。 单击目标(​​XUnion), 转到Post Sql并在下面添加语句 -

RENAME XUnion to 'UNION' ; 

答案 2 :(得分:0)

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

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

Integration Service在生成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]

相关问题