2013-10-24 32 views
1

如何使用Informatica將數據加載到名稱爲SQL保留關鍵字的目標表中?Informatica目標表關鍵字

我有一個情況我想使用Informatica的填充稱爲聯盟這與以下錯誤失敗表:附近keywork「聯盟」語法錯誤:

  • SQL服務器消息
  • 數據庫驅動程序錯誤...
  • 功能名稱:執行多個
  • SQL語句:INSERT INTO UNION(UnionCode,UnionName等)

我被告知,更改數據庫屬性以使用帶引號的標識符將解決此問題;然而,我已經嘗試過了,它似乎只適用於來源,而不是目標。

並且在任何人聲明明顯之前 - 我無法更改目標表的名稱。

+0

可能你寫入一個視圖? – momobo

回答

0

你可以請嘗試覆蓋會話屬性中的表名作爲「聯盟」與報價。

0

將數據加載到名稱有效的表中,其結構與union相同。 並且在該目標的Post Sql中,可以使用所需的任何名稱重命名該表。

Ex。 單擊目標(​​XUnion), 去郵政SQL和把下面的語句 -

RENAME XUnion to 'UNION' ; 
0

如果任何表名或列名包含數據庫保留字,如一個月或一年,該會話失敗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文件並將其放置在服務器/ bin目錄。爲每個需要存儲保留字的數據庫創建一個部分。添加任何表或列名稱中使用的保留字。您不需要在此文件中存儲數據庫的所有保留字。 reswords.txt中的數據庫名稱和保留字不區分大小寫。

下面是一個示例reswords.txt文件:

[Teradata數據] MONTH日期間隔[甲骨文]選項啓動[DB2] [SQL服務器]電流[的Informix] [ODBC]月[的Sybase]