SQL Server에서 Openrowset으로 엑셀 파일 읽어오기
openrowset 수행을 위한 옵션 변경
EXEC sp_configure 'Show Advanced', 1
RECONFIGURE
sp_configure 'Ad Hoc Distributed Queries', 1
RECONFIGURE
openrowset을 이용해 엑셀파일을 읽어보면 오류가 발생한다
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0'
,'Excel 12.0;Database=D:\temp\MyFile.xlsx;HDR=YES'
,'select * from [Sheet1$]')
메시지 7403, 수준 16, 상태 1, 줄 5
OLE DB 공급자 "Microsoft.ACE.OLEDB.12.0"을(를) 등록하지 않았습니다.
엑셀파일을 읽어들이는 ACE OLEDB 12 공급자가 없어서 그렇다.
아래에서 "Microsoft Access Database Engine 2010 Redistributable"을 다운받아 설치한다.
난 64bit SQL Server라 64bit를 설치 했다.
https://www.microsoft.com/en-us/download/details.aspx?id=13255
이제 xp_enum_oledb_providers 를 수행하면 다음과 같이 ACE OLEDB 12 공급자가 등록된 것을 확인할 수 있다.
이제 다시한번 openrowset을 이용해 엑셀파일을 읽어보면 정상적으로 읽어지는것을 확인할 수 있다.
마지막 줄의 Sheet1은 엑셀의 시트 이름이며, 뒤에 $를 꼭 붙여야만 한다.
SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0'
,'Excel 12.0;Database=D:\temp\MyFile.xlsx;HDR=YES'
,'select * from [Sheet1$]')
넥슨 게임DB팀 하만철