0

我对 SSIS 相当陌生......所以这是我的问题陈述 - 我想创建一个执行以下操作的包..

1)将一组 1000 个 ID(主键)分解为 100 个组,即 100*10 2)必须将每次获得的 100 个值动态输入到变量中 - 'X' 3)我想在其中使用这个变量在子句中

示例:我有一个以“ID”作为主键的学生表我还有一个带有“ID”列的 Rank_Holders 表 select * from Rank_Holders where ID in (?) 是我想要做的。? 表示映射的变量 - 它应该具有来自学生的 ID 列表。

实际上,我在这里有大型数据库,一个来自 SQL Server,另一个来自 Oracle,ID 列的数量超过 30000,这就是为什么我需要将它分成块并输入 Where in 子句的原因

一步一步的包创建过程真的很有帮助,请帮助。

4

1 回答 1

0

欢迎新人!意识到您对 SSIS 很陌生,我必须告诉您,您的问题陈述虽然不理想,但具有很强的描述性。很难用几行来描述整个问题。

我很确定您将能够自己弄清楚“逐步”部分。我试图给你一些一般的想法。

  1. 主键可能是顺序的,也可能不是顺序的。如果是,那么你很幸运;如果没有,那么您将需要使用 ROW_NUMBER()。例子:

声明@lower int = 10;声明@upper int = 15;

--DECLARE @CETList varchar(3000); -- 我是putti

WITH 子集 AS ( SELECT ROW_NUMBER() OVER (ORDER BY RecordID) AS RowNumber , RecordID FROM #A )

--SELECT @CETList = COALESCE(@CETList + ',', '') + CAST(RecordID AS varchar) --FROM 子集 --WHERE RowNumber BETWEEN @lower AND @upper;

--选择@CETList;--打印@CETList;

SELECT * From UserAudit where RecordID in (SELECT RecordID FROM subset WHERE RowNumber BETWEEN @lower AND @upper );

同样,这还不是一个完整的解决方案。请查看它是否可以帮助您。我把它放在答案部分,因为我需要比评论部分提供的空间更多的空间。

于 2013-06-14T15:46:19.623 回答