【发布时间】:2016-03-07 16:39:07
【问题描述】:
我正在创建一个增量负载,它将数据从 ORACLE 拉到 SQL 服务器。增量加载将基于 MODIFIED_DATE 列。
我创建了一个结果集变量,用于存储目标表中的 MAX modified_date。因此引擎只会检查 MODIFIED_DATES 中大于变量的行,并执行查找以查看是否需要添加、更新或删除该行。
所以我有我的 MAX MODIFIED DATE RESULT SET,并且我还创建了另一个变量来容纳 SOURCE QUERY,该变量将具有 WHERE 子句,查看 MODIFIED_DATE 列是否大于 MAX MODIFIED_DATE 变量。
例子:
Select column_name,column_name
From table
Where modified_date > '"+ @[User::LastModifiedDate]+ "'"
这让我犯了一个错误:
数据类型“DT_WSTR”和“DT_DATE”与二元运算符“+”不兼容。操作数类型无法隐式转换为操作的兼容类型。要执行此操作,需要使用强制转换运算符显式强制转换一个或两个操作数。
现在,我进行了大量搜索,但我似乎无法找到一种方法来做到这一点。我在网上找到的唯一解决方案是在变量前面 ADD A (DT_WSTR, 25) 导致变量表达式求值,这是我可以让变量表达式求值的唯一方法。
示例:
(DT_WSTR, 25) @[User::LastModifiedDate]+ "'"
当我运行它时它告诉我它是 NOT A VALID MONTH
DESTINATION 表中的MODIFIED_DATE 列位于 SQL Server 中,它的日期类型为 DataTime,如下所示:
2008-06-10 22:22:25.000
YYYY-MM-DD
oracle 中 SOURCE 表中的MODIFIED_DATE 列如下所示:
6/10/2008 10:22:25 PM
MM/DD/YY HH:MM:SS
我该如何解决这个问题?另外,您认为基于MODIFIED_DATE 列执行增量加载的最佳方法是什么?我的方式是更有效的方式之一,还是我可以采取其他方式?
【问题讨论】:
标签: sql sql-server oracle date ssis