2011-03-31 80 views

回答

1

您可以使用OLEDB提供程序或ODBC驅動程序的提供程序來設置它,並使用服務器上的ODBC管理員工具創建連接到Excel文件的連接。您是否打算定期從這個Excel文件中讀取?如果沒有,那麼將其設置爲鏈接服務器可能會過度。

有關詳細信息,請參閱「How to import data from Excel to SQL Server」和「How to use Excel with SQL Server linked servers and distributed queries

+0

**感謝** ... ......... – 2011-03-31 08:17:42

0

對於那些誰正在使用SQL Server 2012+,你可以使用Microsoft OLEDB 12.0提供商附帶的SQL Server 2012+並允許您使用適用於adhoc分佈式查詢的Excel 2007-2013 xlsx文件或作爲鏈接服務器。下面的例子。

Excel工作簿'Application.xlsx'有3個工作表應用程序,設備,用戶 首先激活服務器上的條件查詢。

USE MSDB 
GO 
sp_configure 'show advanced options', 1 
GO 
RECONFIGURE WITH OverRide 
GO 
sp_configure 'Ad Hoc Distributed Queries', 1 
GO 
RECONFIGURE WITH OverRide 
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 

對於條件查詢,使用OPENROWSET函數。

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\Users\Administrator\Desktop\Application.xlsx;HDR=YES', 'SELECT * FROM [Application$]'); 

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\Users\Administrator\Desktop\Application.xlsx;HDR=YES', 'SELECT * FROM [Device$]'); 

SELECT * FROM 
OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\Users\Administrator\Desktop\Application.xlsx;HDR=YES', 'SELECT * FROM [User$]'); 

對於爲Excel格式的2007 - 2013年創建鏈接服務器:

USE MSDB 
GO 
EXEC sp_addLinkedServer 
@server= 'XLSX_MATRIX', 
@srvproduct = 'ACE 12.0', 
@provider = 'Microsoft.ACE.OLEDB.12.0', 
@datasrc = 'C:\Users\Administrator\Desktop\Application.xlsx', 
@provstr = 'Excel 12.0; HDR=Yes' 

現在,查詢您的Excel文件有兩種方式:

SELECT * FROM OPENQUERY (XLSX_MATRIX, 'Select * from [Application$]') 
SELECT * FROM OPENQUERY (XLSX_MATRIX, 'Select * from [Device$]') 
SELECT * FROM OPENQUERY (XLSX_MATRIX, 'Select * from [User$]') 

SELECT * FROM XLSX_MATRIX...[Application$] 
SELECT * FROM XLSX_MATRIX...[Device$] 
SELECT * FROM XLSX_MATRIX...[User$] 
相關問題