복붙노트

[SQL] SSIS에서 여러 열로 쉼표 구분 기호와 데이터의 단일 열을 분할

SQL

SSIS에서 여러 열로 쉼표 구분 기호와 데이터의 단일 열을 분할

I 쉼표로 구분 연접 열의 행을 포함하는 데이터 열은 하나의 컬럼 3과 SQL 서버의 테이블을 갖는다. 첫 번째 행은 내가 만들 새 테이블의 헤더 행입니다. 그래서 기본적으로 나는이를 켜려고합니다.

Data      | ID | Source 
====================
a,b,c,d,e | 1  | a.csv

f,g,h,i,j | 2  | b.csv

으로

a | b | c | d | e
=================
f | g | h | i | j

SSIS를 사용하여, 내가 그 다음 데이터 열의 텍스트 파일로 덤프를 사용하고 일을 생각할 수있는 유일한 방법은 플랫 파일 소스로 다시 읽을 수 있지만 차라리 여분의 불필요한 파일을 만들지 않도록 것

편집 : 죄송 임 2008 SSIS 사용

해결법

  1. ==============================

    1.당신이 할 수있는 것은 같은 파일을 읽을 수있다. 그리고 스크립트 작업에 해당 값을 분할합니다.

    당신이 할 수있는 것은 같은 파일을 읽을 수있다. 그리고 스크립트 작업에 해당 값을 분할합니다.

    그래서 소스에서 스크립트 작업로 이동합니다. 이어서 입력 열로서 스크립트 작업에서 해당 값 (InputColumn1)를 함유하는 칼럼을 선택한다. 그런 다음 출력 열을 지정 (I 맞다면 내가 그렇게 5 (OutputColumn1 지정, 당신은 5를 참조 - 5)).

    이 작업이 끝나면, 스크립트 자체 (C 번호)로 이동합니다.

    아래에:

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
    }
    

    거기에 다음 코드를 넣습니다 :

    var ColumnValue = Row.InputColumn1.Split(',');
    
    Row.OutputColumn1 = ColumnValue[0];
    Row.OutputColumn2 = ColumnValue[1];
    Row.OutputColumn3 = ColumnValue[2];
    Row.OutputColumn4 = ColumnValue[3];
    Row.OutputColumn5 = ColumnValue[4];
    

    스크립트 작업 후 소스뿐만 아니라 OutputCoulmns1-5에서 모든 열을 사용할 수 있습니다 그리고 당신은 당신이 무엇을 할 수 있습니다.

    산출

     Data      | ID | Source |OutputColumn1 |OutputColumn2|  etc. 3-5
     ================================================================
     a,b,c,d,e | 1  | a.csv  |  a           |  b
    
     f,g,h,i,j | 2  | b.csv  |  f           |  g
    

    뭔가 명확하지 않다 요청하시기 바랍니다.

  2. ==============================

    2.당신은 구분 기호 잘으로 구분 분리 문자열 토큰 식을 사용할 수 있습니다.

    당신은 구분 기호 잘으로 구분 분리 문자열 토큰 식을 사용할 수 있습니다.

    이 같은 파생 열 변환 뭔가를 사용 :

    당신에게 "A"를 제공해야

    당신을 제공해야 "B"

    또한 간단한 변환 스크립트 구성 요소를 설정할 수 있습니다. 입력으로하여 "DATA"열을 사용하여 당신이 필요로하는 많은 출력으로 추가 할 수 있습니다. 분할 방법 그리고 네 세트를 사용합니다.

  3. from https://stackoverflow.com/questions/19653995/split-a-single-column-of-data-with-comma-delimiters-into-multiple-columns-in-ssi by cc-by-sa and MIT license