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