2016-12-13 3 views
0

다음과 같은 상황이 있습니다 : CSIS에서 시스템으로 일부 데이터를 가져 오기 위해 SSIS에서 프로젝트를 생성해야하지만이 작업을 수행하려면 일부 열을 읽어야하며이 열 중 하나는 값의 "그룹"입니다. 계획 수평선과이 수평선의 값은 각 프로세스를 변경할 수 있으므로 일부 프로세스는 5 개월 및 기타 15 개월이 될 수 있습니다.SSIS의 스크립트 구성 요소를 사용하여 열을 만드는 방법은 무엇입니까?

파일 (csv)은 항상 21 개의 열로 채워지지만 (22, 23 ...)이 지나면 1, 2 개 이상의 열 (수평선)이 있는지 알 수 없습니다.

그리고 이런 상황에서 나는 스크립트 변환 편집에서 "입력과 열"의 열을 만들 수 없다. 나는 지평선의 길이에 기초하여 만들어야한다.

그래서 내 질문에 가능하다면 수평선 길이를 발견 할 때 런타임에 열을 만들 수 있습니다.

감사합니다.

+0

짧은 대답 : 아니요, SSIS에서 런타임에 열을 만들 수 없습니다. 대상의 열 수가 변경되면 메타 데이터를 새로 고쳐야합니다. 또는 COMMAND 대상을 사용하여 각 행에 대해 INSERT 문 또는 저장 프로 시저를 실행할 수 있지만 성능이 저하됩니다. –

답변

1

SSIS는 그렇게 작동하지 않습니다. 열의 수는 디자인 타임에 설정됩니다.

합리적인 상한값, 예를 들어 50 열을 설정하면 데이터의 마지막 "열"을 읽고 스크립트 구성 요소를 통해 해당 필드로 구문 분석 할 수 있습니다. 그렇지 않으면 파일을 사전 처리하여 가변 폭 행을 정규화 된 세트로 unpivot 할 수 있습니다.

1

두 가지 방법으로이 작업을 수행 할 수 있습니다.

  1. 파생 열 변환 추가 스크립트 요소 https://msdn.microsoft.com/en-us/library/ms188192.aspx

  2. 컬럼 (들)을 추가하고 해당 식 맞춤 열을 추가한다.

+0

이 질문에 대한 답변으로이 포스트가 나왔습니다. 스크립트 구성 요소를 사용하여 열을 추가하는 방법이었습니다. Output0에 열을 추가하면됩니다. Input0_ProcessInputRow 메서드에서 필요한 값을 열에 할당합니다. 나는 SQL에서 할 수있는 너무 복잡한 문자열을 생성해야했습니다. – gwgeller

0

모든 답변. 나는 다른 것을 창조하기 위해 나의 비전을 바꾸었다. 스크립트 tranformation을 사용하여 다음을 확인합니다.

  1. 생성해야하는 컬럼 수;
  2. 연결을 열고 지평선의 열을 삭제하십시오.
  3. 새로운 지평선에 따라 기둥을 다시 만듭니다.

나는 열을 채우기 위해 모든 논리를 수행하는 프로 시저를 호출하기 위해 SQL 실행 작업을 포함 시켰습니다.

감사합니다.