[SQL SERVER][Memo]Excel資料怎麼匯入 SQL2008(64位元版本)
原問題是MSDN論壇中某位網友詢問,內容如下:
目前64位元主機已不支援Microsoft.Jet.OLEDB.4.0,
那要如何把Excel 資料匯入到 64位元的SQL Server 中呢?
32位元的做法如下:
SELECT * INTO XLImport3 FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\test\xltest.xls;Extended Properties=Excel 8.0')...[Customers$]
雖然現階段JET Provider沒有x64版本,但office2010問世後可以使用ACE Provider來處理這問題,
當然你也可下載Microsoft Access Database Engine 2010 可轉散發套件取得相關驅動。
測試過程如下
SQL Server 64位元版本
Excel資料來源
SQL Server啟用Ad Hoc Distributed Queries
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
執行Excel資料匯入
SELECT *
INTO dbo.myuser
FROM
OPENROWSET('Microsoft.ACE.OLEDB.12.0'
,'Excel 8.0;Database=E:\report1.xls'
,'SELECT * FROM [item1$]')
go
發生權限問題。
--處理權限問題
USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'AllowInProcess' , 1
GO
EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0' , N'DynamicParameters' , 1
GO
再次執行Excel匯入
成功匯入。
匯入Excel2010
(Excel 12.0 或 Excel 8.0測試都正常)