연구개발/DBA

엑셀->SQL->CSV 한방에 끝내기

HEAD1TON 2011. 8. 14. 03:20

목적 : 엑셀데이터로 들어온 요청 내용을 SQL로 처리후 CSV로 넘겨줄시 최대한 시간을 아껴보자!!!

 

요청내용 : 엑셀데이터의 클래스 코드를 클래스 명으로 변경 (코드성 TB은 DB에 저장되어 있음)

 

엑셀 내역

캐릭터명 클래스
홍길동 1
이천수 2
홍명보 3
박명수 4

 

요청데이터(엑셀파일)을 위치할 폴더 및 처리 후 CSV로 내보낼 폴더를 정의(예제에서는 D:\REQ와 D:\REP로 정의하였음)

 

오픈쿼리를 위한 Configure 설정

USE master;

GO

EXEC sp_configure 'Ad Hoc Distributed ', '1';

RECONFIGURE WITH OVERRIDE;

 

 

Test용 Table 생성(코드성TB)

Use tempDB;

go

create table classname

(

       ClassCode int,

       ClassName nvarchar(10)

)

go

 

insert into classname(classcode, classname) values(1,'법사')

insert into classname(classcode, classname) values(2,'살성')

insert into classname(classcode, classname) values(3,'궁성')

insert into classname(classcode, classname) values(4,'치유')

 

오픈쿼리 실행

Select A.캐릭터명, B.ClassName INTO TEST_BCP

FROM  OPENDATASOURCE

      ('Microsoft.ACE.OLEDB.12.0', 'Data Source=D:\REQ\T_USER.xlsx;Extended Properties="Excel 12.0" ')...[캐릭터$] A

Inner Join classname B

ON A.클래스= B.ClassCode

 

Command창에 BCP 실행(단 Windows인증이 아닐경우 -T가 아닌 -P, -U실행)

bcp "Select 캐릭터명, ClassName from Test_BCP"  queryout d:\Rep\result.csv  -c -T -t,

 

끝  -_-V