2016-09-20 6 views
0

毎月4-5百万レコードのテーブルを作成し、それを240,000レコードの.txtファイルに分割する必要があります。 SQL Server 2012でこのコードを使用してファイルのページングを作成し、SSISパッケージを使用してこのストアドプロシージャを実行し、.txtファイルを作成します。 @PageNumberを2に変更し、ストアドプロシージャを再コンパイルし、SSISパッケージを実行します。 @PageNumberを3に増やしてください。レコードがなくなるまで、4百万レコードが20倍くらいになります。SSISを使用して複数のテキストファイルをSQL Serverにエクスポート

誰かが@PageNumber値20xを変更することなく、コードをループして複数の.txtファイルを1回のパスで作成する方法を知っているのだろうか?

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を使用します。

テーブル内の行数と現在の行カウンタを保持するには、パッケージ変数を使用します。

はその後にデータフローを置く:(ETCページ1、ページ2、例えば)

まず、あなたはその反復のためにそれを名前を付けたいものは何でもあなたのフラットファイル先の接続文字列を変更するループでスクリプトを置きますForループでは、カウンタ変数を使用して変数の値から240k行を取得します。

ループが繰り返されるたびに、テーブル内の行数を超えるまでカウンタを240kインクリメントし、ループを終了します。

関連する問題