[SQL Server]如何在 SQL Server 內針對 Excel 做查詢

  • 3797
  • 0
  • 2013-01-17

因為網友在問說, 怎麼樣把 Excel 的資料和 SQL Server 的資料做 Join Query
之前有實作 Orcale Linked Server 的經驗, 所以猜想 Excel 應該也可以這樣實作
拜了 Google 大神一下,還真的有人實作成功...

因為網友在問說, 怎麼樣把 Excel 的資料和 SQL Server 的資料做 Join Query

之前有實作 Orcale Linked Server 的經驗, 所以猜想 Excel 應該也可以這樣實作

拜了 Google 大神一下… 還真的有人實作成功

Excel Import to SQL Server using Linked Servers

所以在這邊  Memo 紀錄一下

 

前置作業

Step1 : 安裝 Microsoft Access Database Engine 2010 可轉散發套件

這組套件是協助 Microsoft SQL Server 存取現有 Microsoft Office 檔案的資料

例如 : Microsoft Office Excel 2010 (*. xls、*. xlsx 和 *.xlsb)

和 Microsoft Office Access 2010 (*. mdb 和 *. accdb)

P.S 安裝後, 請務必重開機… 不然會無法使用該套件~

 

Step2 : 執行下列 T-SQL , 提高上述的轉發套件的存取權限

EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
GO 
EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
GO

 

clip_image001[6]

 

建立 Excel 的 Linked Server

下圖是我們要使用的 Excel 資料表

clip_image002[6]

開啟 SQL Server Management Studio →  Server Objects(伺服器物件)

→  Linked Servers(連結的伺服器)

點擊右鍵選取 New Linked Server(新增連結的伺服器(N))

clip_image003[6]

選擇 Other Data Source(其他資料來源) → Provider(提供者)

選取 Microsoft Office 12 Access Database Enfine OLE DB Provider

clip_image004[6]

依序輸入

Linked Server(連結的伺服器) : Excel_Service > 可自由輸入

Product Name(產品名稱) : Excel

Data Source(資料來源) : C:\XXX\OOO.xlsx > Excel 目標對象

Provider String(提供者字串) : Excel 12.0;IMEX=1;HDR=YES

點擊 OK(確定) 即可產生如下列的 Linked Server

clip_image005[6]

選取其中工作表建立查詢指令

clip_image006[6]

查詢完後的結果就如同原 Excel 一般

clip_image007[6]

也可以使用 Count 函數 & Join Table

clip_image008[6]