2016-09-20 66 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遞增計數器,直到它超過表中的行的數目,然後退出循環。

相關問題