Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 使用SSIS在SQL Server中导出多个文本文件_Sql Server_Tsql_Ssis_Sql Server 2012 - Fatal编程技术网

Sql server 使用SSIS在SQL Server中导出多个文本文件

Sql server 使用SSIS在SQL Server中导出多个文本文件,sql-server,tsql,ssis,sql-server-2012,Sql Server,Tsql,Ssis,Sql Server 2012,我每月运行一个流程,要求我获取一个包含400-500万条记录的表,并将其划分为每个240000条记录的.txt文件。我在SQL Server 2012中使用此代码创建文件分页,然后使用SSIS包运行此存储过程并创建.txt文件。我将@PageNumber更改为2,重新编译存储过程,运行SSIS包。将@PageNumber增加到3,以此类推,直到我用完了400万条记录,大约需要20倍的时间 我想知道是否有人知道一种方法可以循环代码,一次创建多个.txt文件,而不必更改@PageNumber值20x

我每月运行一个流程,要求我获取一个包含400-500万条记录的表,并将其划分为每个240000条记录的.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循环中放入一个数据流,该循环使用计数器变量从变量的值开始获取240k行

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