SSIS - 열 가져오기 - BLOB(Binary Large Object) 데이터를 저장하자
오늘은 열 가져오기 입니다.
열 가져오기 및 열 내보내기 (다음 포스팅 예정)는 BLOB (Binary Large Object)형 데이터를 대상로 수행 되는 작업 입니다.
보통 이미지나 큰 텍스트 파일들을 보관할 때에는 데이터베이스에 주소만 기록하고 실제의 파일은 다른 물리적인 위치에 경유하는 경우가 많습니다.
하지만 SQL Server에서도 Image, Text, varbinary 등 데이터를 저장할 수 있는 타입을 제공 합니다.
물론 이미지를 모두 데이터베이스에 저장한다면 데이터의 크기가 커지는 문제 및 패킷 사이즈의 문제가 발생하지만
데이터베이스 내에 저장되기 때문에 보안수준이 데이터베이스 수준과 동일하게 유지되고 관리의 편의성이 증대 되는 장점이 있습니다.
(사용처에 대한 고민은 사용자가...알아서.....)
실습을 통해서 열 가져오기를 만들어 보겠습니다
1. 우선 테스트에 필요한 이미지 파일을 생성 합니다.
저는 D:\Test 라는 폴더에
1.png (저 이렇게 생겼어요 ㅋ 잘생겼나요?)
2.png
이렇게 그림 파일을 생성 하였습니다.
파일 경로 기억 하세요 ^^
2. 테스트용 테이블을 생성 합니다.
TBL_A : 원본 테이블
TBL_B : 출력 테이블
원본 테이블 (TBL_A)에 데이터를 입력 합니다. 이때 파일 경로를 실제 이미지 파일이 있는 경로로 입력 합니다.
(파일 없으면 에러 납니다. 에러 처리에 관한 포스팅은 다음 기회에~!)
3. BIDS를 실행 합니다.
프로젝트를 생성합니다.
4. [데이터 흐름 태스크]를 만들고 [데이터 흐름] 탭에서 아래와 같이 작업을 끌어다 놓습니다.
그리고 [열 가져오기]작업에서 [편집] 선택 합니다.
5. 편집기 창에서 [입력 열] 탭을 선택 합니다.
입력 열에서 이미지 파일의 컬럼을 선택 합니다.
6. 만약 지원되지 않는 열이 선택 된다면 오류가 발생 합니다.
7. [입/출력 속성] 탭으로 이동 합니다.
[열 가져오기 출력]을 확장하여 [출력 열]을 확장 합니다.
[열 추가(C)] 버튼을 선택하여 출력열을 생성하고 이름을 지정 합니다.
이때 이름은 기존의 컬럼 명과 구분 할 수 있는 것으로 합니다.
(뒤에서 매핑시 혼돈의 우려가 있기 때문에)
8. [출력 열] - [Convert_Image] 속성에서 데이터 타입을 변경 합니다.
[유니코드 텍스트 스트림]을 선택 합니다.
9. [Convert_Image]의 속성에서 ID 값(55) 을 기억 합니다.
10. [열 가져오기 입력] 을 확장하여 [입력 열] 에서 기존의 이미지 경로 컬럼을 선택합니다.
그리고 속성 창에서 [FileDataColumnID]를 Convert_Image 의 ID값을 입력하여 매핑 합니다.
11. 출력 선을 모두 연결 합니다.
TBL_B에서 [편집]을 선택 합니다.
12. TBL_B의 [편집기]창에서 입력열과 출력열에 대한 매핑을 합니다.
기존의 add_file이 아닌 변환된 값을 저장하여야 하므로 입력열 - 출력열 의 매핑을 변경 합니다.
13. 패키지를 실해 합니다.
늘 그러듯!
녹색 : 정상 실행
빨간색 : 오류 발생
14. 데이터를 확인 합니다.
기존 TBL_A에는 파일의 경로만 가지고 있습니다.
TBL_B에는 해당 경로의 그림파일에 대한 바이너리 값이 저장된 것을 확인 할 수 있습니다.
열 가져오기를 활용하면 외부의 다른 툴 없이도 그림파일을 간단히 DB로 저장할 수 있을 듯 합니다.
강성욱 / http://sqlmvp.kr
'SQL Server > SSIS 강좌' 카테고리의 다른 글
열 복사 - 원본 열을 복사 하자 (0) | 2015.07.16 |
---|---|
열 내보내기 - 대상 열을 파일로 출력 하자 (0) | 2015.07.16 |
병합 조인( 두 개의 입력된 데이터를 조인 하자) (0) | 2015.07.16 |
병합 - 두개의 입력 데이터를 합치자 (UNION ALL과 다름) (0) | 2015.07.16 |
플랫파일 대상 - 데이터를 텍스트로 저장하자 (0) | 2015.07.16 |