1. 程式人生 > >查詢語句SqlServer與Excel資料匯入匯出

查詢語句SqlServer與Excel資料匯入匯出

一、Excel檔案在sqlserver資料庫的本地 

1、啟用Ad Hoc Distributed Queries的方法
exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
2、從資料庫將資料匯入到Excel
insert into OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\Excel檔案 名.xls',Sheet1$)select * from 資料庫表名

3、從Excel匯入到資料庫中
insert into 資料庫表名 select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=D:\Excel檔名.xls',Sheet1$)

/*
說明:
Microsoft.Jet.OLEDB.4.0:資料庫提供程式,連線驅動
Data Source:excel的路徑
User ID:excel使用者名稱,預設為Admin
Password:密碼。預設為空
Extended properties:excel版本
[Sheet1$]:Sheet1表單名稱
*/

/*

--將查詢結果插入其他表中(注意欄位個數必須一致,並且一一對應)
insert into 表名(欄位1,欄位2,欄位3,欄位4) 

select 人員,時間,內容,結果 from OpenDataSource('Microsoft.Jet.OLEDB.4.0',

'Data Source=d:\log.xls;User ID=Admin;Password=;Extended properties=Excel 8.0')...[Sheet1$] 

*/

4、關閉Ad Hoc Distributed Queries的方法
exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure


如果是32位的作業系統,32位的sqlServer如上操作就不存在什麼問題了,但如果是64位的作業系統和sqlServer以上的做法就行不通了,而且會報錯
錯誤資訊如下:
訊息 7302,級別 16,狀態 1,第 1 行
無法建立連結伺服器 '(null)' 的 OLE DB 訪問介面 'MICROSOFT.JET.OLEDB.4.0' 的例項。
原因:
在64SQL Engine中已經不提供jet.oledb.4.0的驅動了
解決方法:
下載一個ACE.Oledb.12.0 fo r X64位的驅動,並把連線字串Microsoft.jet.Oledb.4.0 更改為 Microsoft.ACE.OLEDB.12.0
下載地址:
http://www.microsoft.com/downloads/zh-cn/details.aspx?familyid=c06b8369-60dd-4b64-a44b-84b371ede16d
完成後改寫語句:select * from OpenRowSet
('Microsoft.ACE.OLEDB.12.0',
'Excel 8.0;HDR=Yes;Database=c:/test.xls',
[Sheet1$]
)
這樣就搞定了。