2016-12-13 1 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 실행 작업을 포함 시켰습니다.

감사합니다.

관련 문제