SQL2005-使用openrowset 里读取excel文件
很多時候我們都知道使用.net代碼去讀取word,excel文檔,但是我們如何使用sql句語里讀取excel文件呢:SQL2005為我們提供了OPENROWSET來訪問各種數據源:,當然我還是建議使用.net代碼來讀取這些文件。這里就不多說了。
我們先看一下官方的解釋:
包含訪問 OLE DB 數據源中的遠程數據所需的全部連接信息。當訪問鏈接服務器中的表時,這種方法是一種替代方法,并且是一種使用 OLE DB 連接并訪問遠程數據的一次性的臨時方法。對于較頻繁引用 OLE DB 數據源的情況,請改為使用鏈接服務器。有關詳細信息,請參閱鏈接服務器。可以在查詢的 FROM 子句中像引用表名那樣引用 OPENROWSET 函數。依據 OLE DB 訪問接口的功能,還可以將 OPENROWSET 函數引用為 INSERT、UPDATE 或 DELETE 語句的目標表。盡管查詢可能返回多個結果集,但 OPENROWSET 只返回第一個結果集。
語法
OPENROWSET ( { 'provider_name' , { 'datasource' ; 'user_id' ; 'password'??? | 'provider_string' }?????? , { [ catalog. ] [ schema. ] object???? | 'query' }??? | BULK 'data_file' ,??????? { FORMATFILE = 'format_file_path' [ <bulk_options> ]??????? | SINGLE_BLOB | SINGLE_CLOB | SINGLE_NCLOB } } ) <bulk_options> ::=??? [ , CODEPAGE = { 'ACP' | 'OEM' | 'RAW' | 'code_page' } ]??? [ , ERRORFILE = 'file_name' ]??? [ , FIRSTROW = first_row ]??? [ , LASTROW = last_row ]??? [ , MAXERRORS = maximum_errors ]??? [ , ROWS_PER_BATCH = rows_per_batch ] 下面我們以一個例子來說明使用方法: 首先我們建立一個名為11.xls 的excel文檔,文檔的內容如下: 下面我們使用sql 語句來讀取11.xls select *from openrowset
? ('Microsoft.Jet.OLEDB.4.0',
? 'Excel 8.0; Database=C:\Users\111\Desktop\11.xls',
? 'select * from [Sheet1$]') Database就是11.xls文件的路徑。Sheet1是你excel表里的名字. 查詢結果如下: Name Age Title
John??? 25??? Chair Man
Wendy??? 24??? CEO
注意在使用這個sql語句的過程中,我們可能會碰到下面的錯誤
SQL Server blocked access to STATEMENT 'OpenRowset/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. For more information about enabling 'Ad Hoc Distributed Queries', see "Surface Area Configuration" in SQL Server Books Online
大概意思就是sqlserver 阻止了使用'OpenRowset/OpenDatasource'的組件,所以解決辦法如下:
我們使用sql語句來開啟這個功能
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
當然我們也可以使用SQL server的外圍工具來配置如下圖:
在Enamble OpenRowSet and OPENDTASOUCE SUPOORT 前面打上勾就ok了.
?
?
?
?
? ?轉載于:https://www.cnblogs.com/liujiang/archive/2009/01/08/1371954.html
總結
以上是生活随笔為你收集整理的SQL2005-使用openrowset 里读取excel文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于注入(css/c.js)
- 下一篇: 基于角色的访问控制'的权限管理的数据库的