SSIS:创建一个变量表达式,但它抛出错误“DT_WSTR”和“DT_DATE”是不相容的
我创建这将来自拉拉数据ORACLE到SQL服务器增量加载。增量负载将基于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函数
Ahh is see,let me try this。非常感谢 ! – LTLTLT