繁体   English   中英

使用SSIS导出SQL Server中的多个文本文件

[英]Using SSIS to Export Multiple Text Files in SQL Server

我每月运行一个流程,该流程要求我建立一个包含4-5百万条记录的表,并将其分成每个包含240,000条记录的.txt文件。 我在SQL Server 2012中使用此代码创建文件分页,然后使用SSIS包运行此存储过程并创建.txt文件。 我将@PageNumber更改为2,重新编译存储过程,运行SSIS包。 将@PageNumber递增到3,依此类推,直到我用完记录(400万条记录大约需要20倍)。

我想知道是否有人知道一种循环遍历代码并一次性创建多个.txt文件的方法,而不必将@PageNumber值更改为20x?

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循环。

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

首先,将一个脚本放入循环中,该脚本可将平面文件目标的连接字符串更改为您要为该迭代命名的名称(例如:Page1,Page2等)

然后将数据流放入For循环中,该循环使用计数器变量从变量的值开始获得24万行。

循环的每次迭代之后,将计数器增加240k,直到其超过表中的行数,然后退出循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM