업무에 관련된 일도 아니고 커뮤니티의 게시판에 글 올리는 거니깐 편하게 글을 쓸 생각입니다. MVP도 계시고 쟁쟁한 실력자 분들도 많이 계셔서 긴장(?)되는지 글을 쓰고 싶어도 쉽게 못 올리겠더라구요. 그래도 들이대야 실력이 더 쌓일 것 같아서… 누가 뭐래도 일단 즐기면서 글을 써 볼 생각입니다. 그냥 저런 녀석도 있구나 생각해주시고 참고될 사항이 있으면 덧글을 달아주세요. ^^ |
엑셀 2003에서 한 시트에 저장할 수 있는 최대 행 수는 65536행이라고 합니다.
DB에 데이터가 백만 건 가량 있고 이 데이터를 엑셀로 내보내야 할 상황이 있다고 가정하겠습니다. 여러모로 백만 건을 모두 한 시트에 저장하는 것은 무리인 것 같습니다.
그래서 DB의 데이터를 엑셀 시트에 분할하여 내보내는 방법에 대해서 생각해보고자 합니다.
(사실 생각 못했는데 생각해보라고 하셔서… -_-;;;)
<DB 데이터의 준비>
우선 아래의 쿼리를 실행해서 원본 데이터 백만 건을 준비합니다. Data 열에는 아무 문자열을 입력해도 상관없는데 며칠 전 게시물을 읽다가 rand함수가 보이길래 무심코 써보고 싶었습니다.
USE TEMPDB CREATE TABLE SourceTable ( Seq INT IDENTITY(1, 1), Data CHAR(3) DEFAULT (CHAR(ROUND( + CHAR(ROUND( + CHAR(ROUND( ) GO SET NOCOUNT ON INSERT SourceTable DEFAULT VALUES GO 1000000 SET NOCOUNT OFF SELECT COUNT(*) FROM SourceTable SELECT TOP 100 Seq, Data FROM SourceTable |
<엑셀 파일의 준비>
저장 대상이 될 엑셀 파일을 준비합니다. 별 다른 것은 없고 엑셀을 실행 시키고 바로 저장합니다. 저장된 파일 이름은 ResultData.xls로 하겠습니다. 저장한 폴더 이름과 파일 이름 정도만 기억해두겠습니다.
<SSIS 패키지 작성>
이런 구조의 패키지를 만들어 볼 생각입니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
DB 데이터를 엑셀 시트에 분할하여 내보내기 (3) (0) | 2009.06.20 |
---|---|
DB 데이터를 엑셀 시트에 분할하여 내보내기 (2) (0) | 2009.06.20 |
엑셀 파일의 시트 명 알아내기 (0) | 2009.06.20 |
이벤트 처리기의 Propagate 시스템 변수 속성 (0) | 2009.06.20 |
OLE DB 원본으로 뷰(View)를 사용할 때 주의할 점 (0) | 2009.06.20 |