[SQL SERVER][Memo]Excel資料怎麼匯入 SQL2008(64位元版本)

[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位元版本

clip_image001

Excel資料來源

clip_image002

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 

clip_image003

執行Excel資料匯入

SELECT *

INTO dbo.myuser

FROM

OPENROWSET('Microsoft.ACE.OLEDB.12.0'

,'Excel 8.0;Database=E:\report1.xls'

,'SELECT * FROM [item1$]')

go

clip_image004

發生權限問題。

--處理權限問題

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

clip_image005

再次執行Excel匯入

clip_image006

clip_image007

成功匯入。

匯入Excel2010

clip_image008

(Excel 12.0 或 Excel 8.0測試都正常)

clip_image009