环路10条记录的时间和它分配给变量

问题描述 投票:3回答:1

我有900条记录的表。我想在一个时间得到10条记录,并将其分配给变量。当我运行在SSIS每个循环任务,它将循环另外10条记录,并覆盖变量下一次。任何帮助将得到高度赞赏。

我的表像这样e.g

EMPID
0001
00045
00067
00556
00078
00345
00002
00004
00005
00006
00007
00008

这是想要我试图执行SQL任务拉900个记录变量,连接执行SQL任务,对于每个循环,内部每个回路有数据流任务,源代码中有SQL查询,目的地是表。

select * from Dbo.JPKGD0__STP
where EMPID in ?

但是这将传递1循环每个EMPID,所以我想通过每次10个empids。

请让我知道,如果我需要使用不同的方法/或其他任务,以实现这一目标。

sql sql-server ssis etl ssis-2012
1个回答
0
投票

Step (1) - Create variables

你必须创建类型int的两个变量:

  • @[User::RowCount] >>键入int
  • @[User::Counter] >>键入int
  • @[User::strQuery] >>字符串类型

分配下列表达式@[User::strQuery]

"SELECT  EMPID
FROM     Dbo.JPKGD0__STP
ORDER BY EMPIDASC 
OFFSET  " + (DT_WSTR,50)@[User::Counter]  + " ROWS 
FETCH NEXT 10 ROWS ONLY "

Step (2) - Get Row Count

首先添加使用以下命令的Execute SQL Task

SELECT Count(*) FROM Dbo.JPKGD0__STP;

并且将结果存储在@[User::RowCount]变量(check this link了解更多信息)。

Step (3) - For Loop Container

现在,添加For Loop Container利用下列表达式:

  • InitExpression:@[User::Counter] = 0
  • EvalExpression:@[User::Counter] < @[User::RowCount]
  • 赋值:@[User::Counter] = @[User::Counter] + 10

For loop container中,添加一个Data flow task,与OLE DB源和目的地。在OLE DB源,选择Access ModeSQL Command from variable并选择@[User::strQuery]源。


References

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.