반응형

열 가져오기, 열 내보내기

 

열 가져오기열 내보내기 변환은 BLOB(Binary Large Object) 형 데이터를 대상으로 수행하는 변환 작업입니다. 테이블에서 BLOB 데이터 형의 열을 분리한다든지, 반대로 별도로 존재하는 텍스트 파일이나 이미지 파일 등을 테이블 데이터로 합치는 경우에 사용할 수 있습니다.

 

 

 

열 가져오기

 

열 가져오기 변환은 SQL 2005 Beta 버전에서는 파일 추출(File Extractor)라는 이름이었는데, RTM 버전 이후로는 열 가져오기(Import Column)로 변경되었습니다.

 파일을 첨부 할 수 있는 게시판을 생각해 봅시다. 여기 SQLLeader.com에 있는 강좌나 다른 게시판들도 마찬가지입니다. 게시물에 포함된 첨부 파일이나 이미지 파일들은 일반적으로 테이블 내에 저장되지 않고, 별도의 위치에 저장됩니다. 테이블에는 해당 폴더의 물리적인 위치 정보만 가지고 있습니다.

 

 

 

하지만, 위와 같이 별도로 관리하지 않고, SQL에서 제공하는 text, image, varchar(max) 등과 같은 형태의 열에 해당 파일을 직접 저장시킬 수도 있습니다.

 

 

테이블 내에 이와 같은 방식으로 직접 저장시키는 경우, 데이터베이스 파일이 커지는 문제가 있긴 하지만 여러 장점들도 있습니다. 데이터베이스에 저장이 되기 때문에, 데이터베이스 수준의 보안 및 관리 기능을 제공할 수 있으며, 해당 파일이 있는 위치를 읽어와서 조회하는 대신 바로 데이터를 직접 접근할 수 있기 때문에 성능적인 측면에서도 더 나을 수도 있습니다.

 

열 가져오기 변환은 이와 같은 상황을 수행할 수 있는 변환 작업입니다. 예를 들어, 파일에서 데이터를 읽어 데이터 흐름에 추가할 수 있습니다. 데이터 흐름에 추가한 후, 테이블이나 파일 등에 직접 저장할 수도 있으며, 기타 다른 변환 작업을 계속 수행할 수도 있습니다.

 

 

다른 변환 작업들과는 달리 열 가져오기 변환은 고급 속성 편집기만을 제공합니다. (일반 편집기 및 고급 편집기에 대해서는 변환 뒷 부분에서 추가 설명) 입력 열 탭에서는 데이터 위치를 저장하고 있는 열을 지정합니다. 위의 그림에서, File 이라는 열에는 열 가져오기를 수행할 대상인 파일 정보가 들어있습니다.

 

 

 

/출력 속성 탭에서는 읽어 들인 데이터 파일을 출력할 열을 지정해줘야 합니다. /출력(I) 부분에서 열 가져오기 입력 부분은 파일 정보를 가지고 있는 열에 대한 속성입니다. 열 가져오기 출력출력 열 부분에서 아래의 열 추가(C) 버튼을 이용하여 읽어온 데이터를 출력할 열을 설정해 줘야 합니다. 위의 그림에서는 열 이름을 ReadData, 데이터 유형을 텍스트 스트림(DT_TEXT)으로 지정하였습니다. 그런 후, 열 가져오기 입력의 입력 열을 확장한 후, 파일명을 가지고 있는 열에 대한 속성 중 FileDataColumnID의 속성값에 출력에서 추가한 열의 ID값(위의 그림에서는 166)을 입력해 줘야 합니다. 이것은 입력받은 열 정보에 대한 출력 열을 지정해주는 작업입니다.

 

 

기본적으로 열 가져오기 변환에서 오류 출력을 설정해 주지 않은 상태에서 가져올 파일이 없는 경우에는 작업이 실패하게 됩니다. 예를 들어, 파일 위치 정보를 가지고 있는 열에서 d:\files\img1.jpg 라는 값이지만, 해당 파일이 존재하지 않는 경우에는 변환 작업은 실패하게 됩니다. 이 경우, 오류 출력 대상을 지정한 후 열 가져오기 변환의 오류 출력선(붉은 선)을 연결해 주면 오류 처리 방법을 설정할 수 있습니다.

 

 

[참고] 열 가져오기 변환에서 오류 출력을 변경할 수 있는 메뉴가 따로 없습니다. 오류 출력을 설정하려면 오류 대상을 먼저 만든 후, 열 가져오기 변환의 붉은 선을 연결시키면 오류 출력 구성을 설정할 수 있는 메뉴가 나타납니다. 만약, 설정한 오류 출력 구성을 변경하기 위해서는 기존 오류 출력을 제거한 후 다시 연결해야 하며, 설정해 놓은 오류 출력 구성에 대한 사항을 확인할 수도 없습니다.

열 내보내기 변환의 경우에는 변환 편집기 내에 오류 출력 탭이 별도로 존재하기 때문에, 해당 부분에서 설정 및 수정, 확인할 수 있습니다. 이는 앞 부분에서 언급한 것과 같이 열 가져오기 변환의 기본 편집기는 고급 속성 편집기인 반면, 열 내보내기의 기본 편집기는 일반 편집기이기 때문입니다.

 

 

 

 

 

열 내보내기

 

열 내보내기 변환은 열 가져오기 변환과 반대되는 변환 작업입니다. 입력되는 데이터 중, 특정 열의 정보를 별도의 파일로 출력시킵니다. 다른 변환 작업과는 달리, 데이터를 저장할 대상 개체를 별도로 지정하는 대신 변환 작업 내의 속성 창에서 직접 설정하게 됩니다.

열을 내보낼 수 있는 데이터 형식은 텍스트 스트림(DT_TEXT), 유니코드 텍스트 스트림(DT_NTEXT), 이미지(DT_IMAGE)형만 가능하며, 파일에 저장할 때의 세부 옵션을 지정할 수 있습니다.

 

 

Ÿ           추출 열 추출할 데이터가 있는 열을 지정합니다. 입력 데이터 중, 텍스트 형이나 이미지 형의 열이 자동으로 리스트 됩니다.

Ÿ           파일 경로 열 추출 열의 데이터가 저장될 파일 경로를 포함하고 있는 열을 지정합니다.

Ÿ           추가 허용 작업 수행 시, 대상 파일이 이미 있는 경우, 추가로 쓸 것인지를 설정합니다.

Ÿ           강제 자름 데이터를 쓰기 전에 기존의 파일 내용을 삭제하고 새로 쓸 것인지를 설정합니다.

Ÿ           바이트 순서 표시 쓰기 – BOM(Byte Order Mark : 바이트 순서 표시 정보)를 파일에 쓸 지를 설정합니다. 데이터 형식이 유니코드 텍스트 스트림(DT_NTEXT)이며, 기존 파일에 추가되지 않는 경우에만 BOM을 쓸 수 있습니다.

 

[참고] BOM(Byte Order Mark) – 바이트 순서 표시

유니코드 텍스트 파일이 Little-Endian인지 Big-Endian인지 아니면 UTF-8 인지를 쉽게 알 수 있도록 하기 위해, 유니코드 파일의 시작 부분에 2~3바이트 정도의 문자열을 추가합니다. 이 문자열은 보이지는 않으며, 헥사 에디터(Hex Editor)를 이용해서 확인할 수 있습니다.

 

             Little-Endian BOM        : FF FE

             Big-Endian BOM          : FE FF

             UTF-8 BOM                  : EF BB BF 또는  BOM 정보가 없음

 

 

 

 

따라하기

 

열 가져오기 변환을 이용한 간단한 예제를 수행해 보겠습니다. 우선 예제를 위해 원본 파일 및 데이터 파일들이 필요합니다. 다음 단계에 따라 원본 파일을 생성하기 바랍니다.

 

[원본 파일 및 데이터 파일 생성 부분]

1.        메모장을 이용하여 다음과 같은 파일을 생성합니다. 본 예제에서는 D:\SSIS_Demo\ 폴더를 대상 폴더로 설명하겠습니다.

A.        D:\SSIS_Demo\Col_In_Demo.txt



B.       D:\SSIS_Demo\Demo_Data1.txt

        

C.       B와 같은 형태로 Demo_Data5.txt 파일까지 총 5개의 데이터 파일을 만듭니다.

 

[열 가져오기 변환 설정]

2.        빈 패키지 파일 하나를 추가한 후, 데이터 흐름 작업을 추가합니다.

3.        연결 관리자에서 새 플롯 파일 연결을 이용하여 플랫 파일 연결을 하나 추가합니다.

      

4.        탭과 고급 탭을 클릭한 후, 확인을 눌러 연결 관리자 편집기를 닫습니다.

5.        데이터 흐름 영역에 플랫 파일 원본을 추가한 후, 플랫 파일 원본 편집기 내의 연결 관리자에 3에서 추가한 플랫 파일 연결을 지정합니다.



6.        도구 상자에서 열 가져오기 변환을 추가한 후, 5에서 추가한 원본의 녹색 선을 연결합니다.



7.        열 가져오기 변환을 더블 클릭하여 고급 열 가져오기 변환 편집기를 연 후, 입력 열 탭에서 열 1을 체크합니다. 파일 경로를 포함하고 있는 열을 선택하는 작업입니다.



8.        /출력 속성 탭에서 열 가져오기 출력 부분을 확장한 후, 출력 열을 선택한 상태에서 아래 부분에 있는 열 추가(C) 버튼을 클릭하여 출력할 열을 지정합니다. 추가한 열 이름을 ReadData로 변경하고, 오른쪽의 속성 부분에서 DataType텍스트 스트림(DT_TEXT)으로 변경합니다. 이 후, 공용 속성 부분에 있는 ID 값을 확인합니다. 본 예에서는 42입니다.



9.        왼쪽 부분의 /출력(I) 부분에서 열 가져오기 입력을 확장한 후, 입력 열 아래에 있는 1을 선택합니다. 오른쪽의 속성 부분에서 사용자 지정 속성 부분에 있는 FileDataColumnID의 값에 8에서 확인한 출력 열의 ID값을 입력합니다. 이 작업은 입력 데이터와 출력 열을 연결해 주는 작업입니다.



10.    확인을 눌러 편집기를 닫습니다.

11.    데이터 흐름 영역에 플랫 파일 대상을 하나 추가한 후, 열 가져오기 변환의 녹색 선을 연결합니다.



12.    플랫 파일 대상을 더블 클릭하여 편집기를 연 후, 새로 만들기(N)를 클릭하여 결과를 저장할 플랫 파일 연결을 추가한 후, 매핑 탭에서 각 열에 대한 연결을 설정합니다. 본 예제에서는 결과 파일을 D:\SSIS_Demo\Col_In_Merge.txt로 지정하였습니다.





13.    패키지를 실행하여 결과 파일을 확인합니다.

 
 
반응형

+ Recent posts