2013-05-23 1 views
2

SSIS를 사용하여 SQL Server 2008에서 Netezza (Nps6)로 증분로드를 수행하려고합니다. Netezza 5.x 버전 OLEDB 드라이버가 사용되었습니다. 나는 Maximum insert commit size = 0과 함께 Table or View - Fast Load 옵션을 사용하고 있습니다.Netezza SSIS를 사용하는 SQL Server의 증분로드

여기서 Netezza 테이블에 수천 개의 레코드를 삽입하려고합니다. 이 대상 테이블에는 수백만 개의 레코드가 들어 있습니다. 이 데이터 흐름 작업을 완료하는 데 몇 시간이 걸렸습니다. 나는 네티 관리자 활성 쿼리로 보았을 때 나는

이 에게
insert into "destination_table"(col1, col2, col3) 
select c0, c1, c2 from external '/dev/null' (c0, c1, c2) using ( 
    remotesource odbc' delimiter ' ' escapechar '\' ctrlchars 'yes' crinstring 'yes' timeroundnanos 'yes' encoding 'internal' maxerrors 1 
) ; 

이 사람이 나를 도울 수,

SELECT * FROM Destination_Table; 

다음 단계는 다음과 같은 외부 테이블로드, 아래 같은 쿼리가 문제라고 볼 수 왜 SELECT * FROM 대상 테이블이로드에 필요한지 이해하십시오. 또는 Netezza OLEDB 드라이버가 SSIS와 함께 작동하는 방법.

감사합니다.

답변

1

OLEDB 6.x에서 버전을 설치 한 후이 "DESTINATION SELECT * FROM TABLE "문제가 발생하지 않습니다. 나는 OLEDB 6 버전으로 좋은 성능 향상을 볼 수있었습니다. 그러나 OLEDB 5.x 버전에서 작업하는 경우 무대 테이블에로드 한 다음 대상 테이블에로드하는 것이 더 낫다고 생각합니다.

1

OLE DB 대상 구성 요소에서 데이터 액세스 모드에 대해 Table or View -fast load 옵션을 선택하지 않으면 설명 된 동작이 발생합니다. 빠른로드 옵션은 내부적으로 BULK INSERT를 사용하여 대상 테이블에 데이터를 업로드합니다.

Fast Load Option

SELECT * 같은 Table or view 동작합니다 사용하고 모든 열을 가져옵니다. 이 액세스 모드는 원본에서 대상까지 테이블이나 뷰의 모든 열이 필요한 경우에만 사용해야합니다.

Netezza를 사용하기 때문에이 옵션이 기본적으로 나타나지 않을 수도 있습니다. 가능한 해결 방법과 함께 여기에서 논의

참조 문제 :

http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/965b6d83-cf5e-405b-8784-7981e4386adc

공식 버그 리포트는 여기에 제기 :

https://connect.microsoft.com/SQLServer/feedback/details/569087

+0

죄송합니다. 세부 정보가 누락되었습니다. 빠른로드 옵션을 사용하고 최대 삽입 커밋 크기가 0으로 설정되었습니다. Milen 감사합니다. –

+0

OLEDB 6.x 버전을 설치 한 후 "SELECT * FROM DESTINATION TABLE"문제가 발생하지 않습니다. 나는 OLEDB 6 버전으로 좋은 성능 향상을 볼 수있었습니다. 그러나 OLEDB 5.x 버전에서 작업하는 경우 무대 테이블에로드 한 다음 대상 테이블에로드하는 것이 더 좋습니다. –

+0

의미가 있습니다. 답을 답안에 추가하고이를 허용으로 표시해야합니다. 다른 사람들이 비슷한 문제에 부딪 힐 경우 내 대답을 남겨 둘 것입니다. –