2016-09-20 37 views
0

我运行一个月度流程,要求我将一个包含4-5百万条记录的表格分成每个240,000条记录的.txt文件。我在SQL Server 2012中使用此代码创建文件的分页,然后使用SSIS包运行此存储过程并创建.txt文件。我将@PageNumber更改为2,重新编译存储过程,运行SSIS包。将@PageNumber增加到3等等,直到耗尽4百万条记录大约需要20倍的记录。使用SSIS导出SQL Server中的多个文本文件

我不知道是否有人知道通过代码的方式来循环,而无需改变@PageNumber值20倍创造一个通多.txt文件?

CREATE PROCEDURE [dbo].[p_ExportAllDMCSBorrowersPaging] 
AS 
BEGIN 
DECLARE @PageNumber AS INT, @RowspPage AS INT 
SET @PageNumber = 1 
SET @RowspPage = 240000 

SELECT [SSN] 
     ,[DOB] 
     ,[LastName] 
     ,[FirstName] 
     ,[CustomerRecordID] 
     ,[ADDate] 
     ,[MiddleName] FROM (
     SELECT ROW_NUMBER() OVER(ORDER BY ID) AS NUMBER, 
       [SSN] 
       ,[DOB] 
       ,[LastName] 
       ,[FirstName] 
       ,[CustomerRecordID] 
       ,[ADDate] 
       ,[MiddleName] 
     FROM [dbo].[All Borrowers 20160919] 
       ) AS TBL 
     WHERE 
      NUMBER BETWEEN ((@PageNumber - 1) * @RowspPage + 1) AND (@PageNumber * @RowspPage) 
     ORDER BY 
      NUMBER 

回答

1

我会为此使用For循环。

使用包变量来保存表中的行数和当前的行计数器。

先放一个脚本改变,无论你需要将其命名为迭代设计的平面文件目标的连接字符串循环(如:第1页,第二页等)

然后把数据流中For循环使用计数器变量从变量的值开始获取240k行。

循环的每次迭代之后,由240K递增计数器,直到它超过表中的行的数目,然后退出循环。

相关问题