2017-11-16 11 views
1

플랫 파일에서 레코드를 읽고 레코드 집합에 저장하는 SSIS 패키지가 있습니다. 레코드 세트의 값을 데이터베이스 테이블의 값과 비교하고 테이블을 업데이트 할 수 있습니까?테이블이있는 SSIS 조인 레코드 집합

SQL Server 2008 R2 및 동일한 버전의 SSIS를 사용하고 있습니다.

+0

일치하는 ID가 일치하면 조회를 사용하고 일치하면 OLE DB SQL 명령을 사용하여 관련 행을 업데이트하십시오. – plaidDK

답변

2
일반적으로 Leran2002의 대답이 옳다

, 가장 정직 방법이 더 매치 출력 행을 리디렉션 및 대상을 사용하도록 설정 조회 구성 요소를 가지고하는 것입니다 나중에 OLE DB 명령.

그러나 결과 집합의 크기에 따라 조회 구성 요소가 각 행을 하나씩 확인하므로 대상 테이블에 많은 레코드가 있으므로 시간이 오래 걸릴 수 있습니다. 또한 조회 구성 요소의 캐시 설정에 따라 많은 양의 메모리를 사용할 수 있습니다.

이를 달성하기 위해 두 개 더 가지 방법이 있습니다 :

병합 파일 소스와 소스로 대상 테이블을 사용

가입, 당신은 병합 가입 할 수 있습니다. DFT의 논리는 좀 더 복잡하지만이 방식은 집합 기반 방식이며 결과가 많을수록 더 효과적입니다.

조건부 분할 구성 요소를 사용하여 파일에서 업데이트, 삽입, 삭제 또는 삭제해야하는 논리를 구현해야합니다.

은 내가보기 엔이 질문에 (정확히 문제,하지만 내 생각에 좋은 비교) 추천 : What are the differences between Merge Join and Lookup transformations in SSIS?

준비 테이블

또 다른 방법은 일시적으로 기록을 저장하기 위해 준비 테이블을 사용하는 것입니다 파일에서. 이 경우 DFT가 파일의 레코드를 스테이징 테이블로로드 한 다음 하나 이상의 Execute SQL Task을 사용하여 두 데이터 세트를 병합 할 수 있습니다. (UPDATE, INSERT, DELETE, MERGE, 필요에 맞는 것을 사용할 수 있습니다).

0

평상시에는 Lookup - 구성 부품에 Redirect rows to no match output을 사용합니다. 그런 다음 Lookup No Match OutputLookup Match Output이라는 두 개의 행 집합을 사용할 수 있습니다.

추신. SSIS에 관한 세 가지 기사가 있지만 러시아어로되어 있습니다 (그러나 SQL 스크립트와 그림이 많이 있습니다). 당신을 흥미 경우 다음과 같은 링크를 볼 수 - https://habrahabr.ru/post/330618/

+0

답변 해 주셔서 감사합니다. 정말 고마워요. 이걸 시험해 볼게요. 그리고 나는 당신에게 돌아갈 것입니다. –