제 6강 여러 파일에 대한 처리
한대성 (admin@sqlleader.com)
에이디컨설팅 / 책임 컨설턴트
SQLLeader.com / 운영자
지금까지는 하나의 웹 로그 파일을 이용하여 데이터를 처리하였습니다. 이번 6강 및 7강에서는 여러 파일에 대한 처리 방법을 설명 드리겠습니다.
지금까지 사용했던 ex070217.log 로그 파일 외에 추가로 4개의 로그 파일을 더 다운 받으시기 바랍니다.
이 로그 파일들은 모두 같은 형식이라고 가정하겠습니다.
SSIS의 여러 좋은 기능들 중에서 크게 내세우는 기능 중의 하나가 반복(Iteration) 기능 또는 루핑(Looping) 기능입니다.
A. Foreach 루프 컨테이너를 이용한 처리 방법
① Foreach 루프 컨테이너는 지정된 원본 경로(예 : D:\SSIS\Data\)에 대해 지정된 조건(예 : ex*.log)에 대한 파일 명을 읽어옵니다.
② 읽어온 파일 명 정보(예 : D:\SSIS\Data\ex070217.log)를 SSIS의 사용자 변수에 저장하도록 설정합니다.
③ 변수에 저장된 파일 명 정보를 연결 관리자의 WebLogFile 연결에서 이용합니다.
④ WebLog 데이터 로딩 작업 내의 WebLogFile 원본에서는 연결 관리자의 WebLogFile 연결을 이용하게 되어 지정된 파일에 대한 변환 및 로딩 작업을 수행합니다.
⑤ Foreach 루프 컨테이너에서는 지정된 원본 경로에 조건에 맞는 모든 파일들에 대해 이 작업을 반복적으로 수행합니다.
이와 같은 단계로 복수 파일을 처리하게 됩니다.
5강에서 이용한 패키지 파일을 이용하여 계속 진행하도록 하겠습니다.
다음과 같이 Foreach 루프 컨테이너를 추가한 후, 대상 테이블 생성 작업을 컨테이너 밖으로 제외시키고 나머지 두 작업을 컨테이너 내에 추가합니다.
기존 형태 |
|
변경된 형태 |
|
⇒ |
|
변경된 형태의 원본 파일 검사 작업과 WebLog 데이터 로딩 작업 사이의 선행 제약 조건에는 3강에서와 같이 조건식을 설정합니다.
Foreach 루프 컨테이너를 더블 클릭해서 편집기를 엽니다.
기본 Enumerator로 Foreach File 열거자가 설정되어 있습니다. 여기서, 윗부분에 있는 Expressions를 선택한 후, ... 버튼을 눌러 속성 식 편집기 창을 띄우고 Directory 속성에 SourceFolderName 변수를 선택합니다. 이것은 3강에서 정의한 SourceFolderName 변수와 FileName 변수를 이용하기 위한 설정입니다.
파일(I) 부분에는
ex*.log
로 입력하고, 파일 이름 검색 부분에서는 이름 및 확장명(E)을 선택합니다.
이제 변수 매핑 탭을 선택한 후, 읽어온 파일 명(예 : ex070217.log)을 저장할 변수를 지정합니다. 이 변수 역시 3강에서 추가한 FileName 변수를 이용합니다.
자, 이제 연결 관리자에 있는 WebLogSourceFile에서 두 변수(SourceFolderName, FileName)를 이용하도록 설정하는 단계이지만, 이미 이것도 3강에서 설정하였습니다.
확인 차원에서 WebLogSourceFile 연결을 선택하고 속성 창에서 Expressions 부분을 확장하여 ConnectionString 속성에 정의된 식을 확인해 보시기 바랍니다.
WebLog 데이터 로딩 작업 내의 WebLogFile 연결에서는 WebLogSourceFile을 이용하도록 이미 1강에서부터 설정되어 있기 때문에 별도로 설정할 사항은 없습니다.
자, 이제 패키지를 실행시켜서 모든 데이터가 다 들어갔는지를 확인해 봅니다.
B. 다중 플랫 파일 연결을 이용한 처리
두 번째 방법은 비교적 많이 알려지지 않은 방법입니다. 우선 5강에서 사용하였던 패키지를 계속해서 이용하도록 하겠습니다. 그리고, 참고로 말씀 드리자면 7강에서도 역시 5강의 패키지를 이용할 것입니다.
연결 관리자에서 마우스 오른쪽 클릭을 해서 나타나는 메뉴 중 새 연결(W)를 선택한 후, MULTIFLATFILE 연결을 추가합니다.
연결 관리자 편집기에서 연결 이름을 WebLogSourceFileMulti로 지정하고 1강에서와 WebLogSourceFile 연결을 설정한 것과 같이 열 정보를 설정합니다.
그런 다음, 다시 일반 탭으로 돌아가서 파일 이름을
D:\SSIS\Data\ex*.log
으로 지정합니다.
제어 흐름 영역에 있는 원본 파일 검사 작업은 삭제하고, WebLog 데이터 로딩 작업 중 WebLogFile 원본의 플랫 파일 연결 관리를 기존의 WebLogSourceFile에서 WebLogSourceFileMulti로 변경합니다.
패키지를 실행시켜서 처리되는 형태와 데이터를 확인해 보시기 바랍니다.
데이터 흐름에서 처리되는 형태를 보면 60,014건이 나타납니다.
즉, 파일 별로 작업을 여러 번 수행하는 것이 아니라, 파일을 읽어오는 단계에서 여러 파일들을 읽어와서 처리하는 형태입니다.
Foreach 루프 컨테이너를 이용하는 방식에 비해 변수나 별도의 컨테이너 등을 사용하지 않기 때문에 비교적 간단하게 처리할 수 있으며, 개별 파일을 처리하는 형태로 만든 패키지를 이용하여 한 번에 여러 파일을 처리해야 할 경우에 유용하게 사용할 수 있는 방식입니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
실습 강좌 8 - 커스터마이징 작업 로그 설정 (0) | 2009.06.20 |
---|---|
실습 강좌 7 - 대상 테이블 동적 설정 (0) | 2009.06.20 |
실습 강좌 5 - 복수 대상으로 적재하기 (0) | 2009.06.20 |
실습 강좌 4 - 데이터 필터링 구현 (0) | 2009.06.20 |
실습 강좌 3 - 파일 존재 확인 작업 추가 (0) | 2009.06.20 |