2016-08-24 2 views
2

표준 SSIS 방식을 사용하여 대형 세트 (수십만)의 CSV 파일을 단일 스테이징 SQL 서버 테이블에로드합니다.SSIS : CSV 소스에 존재하지 않는 열을 추가하십시오.

대부분의 소스 CSV 파일에는 동일한 열 구조 (순서, 열 집합, 데이터 형식)가 있습니다. 함께 약 140 열이 있습니다.

그러나 특정 (< 1 %)의 경우 원본 파일의 일부 열이 부족합니다 (정확히 어떤 열인지 알고 있으며 누락 된 열의 가능한 조합은 세 가지가 있음). 이는 의도적으로 설계된 것으로, 즉 유효한 비즈니스 시나리오 (meh)입니다.

원본 CSV 연결에 해당 열이 실제 원본 CSV 파일에 없으면 "가상"열 (NULL 값/빈 값/공백 값으로 채워짐)을 어떻게 만들 수 있습니까?

나는 C# 스크립팅 구성 요소로 CSV 헤더를 읽고 여러 소스 연결을 만들고 특정 열의 존재 (또는 부족)를 기반으로 올바른 데이터 흐름으로 리디렉션 할 수 있지만 더 나은 "우아한 "솔루션은 소스 파일에 누락 된 빈 열을"인위적으로 "추가 할 수있는"단일 "CSV 데이터 소스만으로"스마트 "합니다. 편의상

는의 전체 열 집합이 있다고 가정하자 :

ID;C1;C2;C3 

그리고 C3 때때로 일부 CSV 파일이 즉 누락되었음을 :

ID;C1;C2 

어떤 힌트를 환영합니다.

답변

0

아니요, SSIS에 내장 된 "스마트 한"CSV 데이터 원본이 없습니다.

확실하게 스크립트 구성 요소를 사용해야하지만 제어 흐름을 올바른 데이터 흐름으로 보내는 데이터 흐름 외부의 스크립트 태스크를 사용하는 대신 데이터로 스크립트 구성 요소가있는 하나의 데이터 흐름 만 만들면됩니다 출처. 스크립트 구성 요소는 현재 가져 오는 CSV를 읽고 해당 열이 누락 된 경우 NULL 또는 기본값을 제공합니다.

+0

스크립트 구성 요소를 데이터 소스로 만들지는 않았지만 합법적으로 보입니다. 항상 첫 번째 시간이 있습니다. 한번 시도해 보겠습니다. 고맙습니다. –

관련 문제