2016-12-21 1 views
0

40 억 개의 레코드가있는 Netezza DB가 있습니다. 데이터를 SQL Server로 옮기는 마이그레이션 프로젝트를 진행하고 있습니다. 간단한 SSIS ETL을 만들었지 만 매우 오랜 시간 동안 실행 중이며 버퍼 메모리 문제로 인해 중지됩니다. 엄청난 양의 데이터를 전송하는 효율적인 빠른 방법은 무엇입니까?Netezza에서 SQL Server 로의 데이터 마이그레이션

+1

SQL을 사용하여 테이블의 데이터를 외부 테이블 (플랫 파일)에서 언로드 할 수 있습니다.이 작업을 수행하는 방법을 이해하는 좋은 출발점은 http://www.ibm.com/support/knowledgecenter/입니다. ko/SSULQD_7.2.1/com.ibm.nz.load.doc/c_load_external_tables.html에는 데이터를 언로드하고 원격 클라이언트 시스템으로 언로드하는 하위 절도 있습니다. 분명히 일단 데이터가 파일로 언로드되면, 이것을 SQL 서버로 가져와야 할 것입니다. 희망이 도움이됩니다. –

답변

0

원본 데이터를 배치 (예 : 1,000,000 행 (메모리에 따라 다름))로 배치하여 Netezza 테이블로 병합 할 수 있습니다.

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 
관련 문제