2016-03-07 60 views
1

我創建這將來自拉拉數據ORACLESQL服務器增量加載。增量負載將基於MODIFIED_DATE列。SSIS:創建一個變量表達式,但它拋出錯誤「DT_WSTR」和「DT_DATE」是不相容的

我已經創建了一個結果集變量存儲從目標表中的MAX MODIFIED_DATE。因此,引擎將只檢查MODIFIED_DATES大於的行,並執行查找以查看該行是否需要添加,更新或刪除。

所以,我有我的MAX修改日期RESULT SET,我也創造了另一個變量將容納源查詢這將有WHERE條款,看看是否MODIFIED_DATE列大於MAX MODIFIED_DATE變量

例子:

Select column_name,column_name 
From table 
Where modified_date > '"+ @[User::LastModifiedDate]+ "'" 

它扔我一個錯誤關閉: enter image description here

現在,我已經做了一噸的搜索,但我似乎無法找到一個方法來做到這一點。我在網上找到的唯一解決方案是ADD A(DT_WSTR,25)在變量的前面,導致變量表達式計算,這是我可以得到變量表達式進行求值的唯一方法。

例子:

(DT_WSTR, 25) @[User::LastModifiedDate]+ "'" 

當我運行它,它告訴我,這是不是有效的月份

DESTINATION表中的MODIFIED_DATE列是SQL Server和它具有DataTime作爲日期類型,如下所示:

2008-06-10 22:22:25.000 
YYYY-MM-DD  

在Oracle中的表中的列MODIFIED_DATE讀起來像:

6/10/2008 10:22:25 PM 
MM/DD/YY HH:MM:SS 

我怎麼能解決這個問題?另外,您認爲基於MODIFIED_DATE列執行增量裝載的最佳方式是什麼?我的方式是更有效的方法之一還是我可以採取另一條路線?

謝謝大家!

回答

0

你需要讓你的SSIS組件調用下面的語句:

Select column_name,column_name 
From table 
Where modified_date > to_date('whateverformat','"+ (DT_WSTR,25)@[User::LastModifiedDate]+ "')" 

的問題是你糾纏字符串與日期。您的lastmodifieddate必須是表達式生成器才能運行的字符串,但我懷疑Oracle期望modified_date是日期,因此只需使用to_date函數

+0

Ahh is see,let me try this。非常感謝 ! – LTLTLT

相關問題