繁体   English   中英

Informatica目标表关键字

[英]Informatica Target Table Keyword

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

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

  • SQL Server消息:键盘“联合”附近的语法不正确
  • 数据库驱动程序错误...
  • 函数名称:多次执行
  • SQL Stmt:插入到UNION(UnionCode,UnionName等)

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

在任何人说清楚之前,我无法更改目标表的名称。

能否请您尝试将会话属性中的表名替换为带引号的“ Union”。

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

例如 单击目标(​​XUnion),转到Post Sql并在下面放置语句-

RENAME XUnion to 'UNION' ; 

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

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

Integration Services在生成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日期间隔[Oracle]选项开始[DB2] [SQL Server]当前[Informix] [ODBC] MONTH [Sybase]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM