2016-09-20 8 views
0

Я запускаю ежемесячный процесс, который требует, чтобы я взял таблицу с 4-5 миллионами записей и разделил ее на .txt-файлы по 240 000 записей каждый. Я использую этот код в SQL Server 2012 для создания подкачки файла, а затем использую пакет SSIS для запуска этой хранимой процедуры и создания файла .txt. Я изменяю @PageNumber на 2, перекомпилирует хранимую процедуру, запустил пакет SSIS. Увеличьте значение @PageNumber до 3 и так далее, пока у меня не закончится запись, которая на 4 миллиона записей занимает около 20x.Использование SSIS для экспорта нескольких текстовых файлов в SQL Server

Мне было интересно, если кто-нибудь знает способ прокрутки кода и создания нескольких файлов .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 

ответ

1

Я бы использовал для этого цикл For Loop.

Используйте переменные пакета, чтобы удерживать количество строк в таблице и счетчик текущей строки.

Сначала положить скрипт в цикле, который изменяет строку соединения вашего плоского назначения файла все, что вы хотите назвать его для этой итерации (например: Page1, Page2 и т.д.)

Затем положить поток данных в Для Loop, который использует переменную счетчика, чтобы получить строки 240k, начиная с значения переменной.

После каждой итерации цикла увеличивайте счетчик на 240k, пока оно не превысит количество строк в таблице, а затем выйдите из цикла.

Смежные вопросы