使用SSIS导出SQL Server中的多个文本文件
问题描述:
我运行一个月度流程,要求我将一个包含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
答
我会为此使用For循环。
使用包变量来保存表中的行数和当前的行计数器。
先放一个脚本改变,无论你需要将其命名为迭代设计的平面文件目标的连接字符串循环(如:第1页,第二页等)
然后把数据流中For循环使用计数器变量从变量的值开始获取240k行。
循环的每次迭代之后,由240K递增计数器,直到它超过表中的行的数目,然后退出循环。