엑셀->SQL->CSV 한방에 끝내기
목적 : 엑셀데이터로 들어온 요청 내용을 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