SSIS:创建一个变量表达式,但它抛出错误“DT_WSTR”和“DT_DATE”是不相容的

问题描述:

我创建这将来自拉拉数据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列执行增量装载的最佳方式是什么?我的方式是更有效的方法之一还是我可以采取另一条路线?

谢谢大家!

你需要让你的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