我有两个具有相似列的 OLEDB 数据源:
TMP_CRUZTRANS
-------------
CUENTA_CTE numeric (20,0)
TMP_CTACTE_S_USD
----------------
CON_OPE numeric(20,0)
我需要减去这两个表之间的所有相似值并保留不同的行。SSIS 中是否有可以执行NOT IN
SQL 查询中通常使用的约束的转换/任务?
目前,我正在使用Execute SQL Task
on执行此操作Control Flow
。
顶部数据流创建第一个表TMP_CRUZTRANS
(合并其他 2 个表之间的连接......但我想这对我的问题并不重要)我需要在第二个表中保留不同的值。
在 中Execute SQL Task
,我有以下声明:
INSERT INTO [dbo].[TMP_CYA]
SELECT RUT_CLIE, CUENTA_CTE, MONTO_TRANSAC
FROM [dbo].[TMP_CRUZTRANS]
WHERE CUENTA_CTE NOT IN (SELECT CON_OPE FROM TMP_CTACTE_S_USD)
最后,有了这张新桌子,TMP_CYA
我可以继续我的工作了。
这种方法的问题是TMP_CRUZTRANS
得到了大约 500 万行,因此使用 Execute SQL Task 将所有这些数据插入到表中非常慢。执行此操作大约需要 5 个小时。这就是为什么我需要在数据流任务中执行此操作。