2016-12-21 24 views
0

Netezza DBに40億レコードのテーブルが1つあります。私はSQL Serverにデータを移動するための移行プロジェクトに取り組んでいます。 シンプルなSSIS ETLを作成しましたが、これは非常に長い時間実行されており、バッファメモリの問題により停止しています。 このような膨大な量のデータを効率的に転送するにはどうすれば効率的ですか?NetezzaからSQL Serverへのデータ移行

+1

は次のようになりhttp://www.ibm.com/support/knowledgecenter/ en/SSULQD_7.2.1/com.ibm.nz.load.doc/c_load_external_tables.htmlには、データのアンロードとリモート・クライアント・システムへのアンロードに関するサブセクションもあります。明らかに、データがファイルにアンロードされると、これもSQLサーバーにインポートする必要があります。 –

答えて

0

ソースデータをバッチに分割することができます。たとえば、1,000,000行(メモリに依存します)のバッチに分割して、Netezzaテーブルにマージすることができます。

あなたがこれを行う方法を理解するためにSQL、良い出発点を使用して外部表(フラットファイル)にテーブルからデータをアンロードすることができます
DECLARE @BatchSize INT = 10000 

    WHILE 1 = 1 
    BEGIN 

        INSERT INTO [dbo].[Destination] --WITH (TABLOCK)  -- Uncomment for 2008 
        (
            FirstName 
            ,LastName 
            ,EmailAddress 
            ,PhoneNumber 
        ) 
        SELECT TOP(@BatchSize)  
            s.FirstName 
            ,s.LastName 
            ,s.EmailAddress 
            ,s.PhoneNumber 
        FROM [dbo].[SOURCE] s 
        WHERE NOT EXISTS (  
            SELECT 1 
            FROM dbo.Destination 
            WHERE PersonID = s.PersonID 
        ) 

        IF @@ROWCOUNT < @BatchSize BREAK 
         
    END 
関連する問題