向SQL2008R2導入Acess、excel數據


一:導入Access數據
1、在sql2008查詢分析 器中輸入如下查詢語句能查出access中的數據
Sql代碼 復制代碼  收藏代碼
  1. SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0''Data Source="e: \\xx.mdb";User ID=Admin;Password=;Jet OLEDB:Database Password=123456')...gouqi  
SELECT * FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="e: \\xx.mdb";User ID=Admin;Password=;Jet OLEDB:Database Password=123456')...gouqi

2、將access 中數據導入到sql2008中
Sql代碼 復制代碼  收藏代碼
  1. SELECT * into sql表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0''Data Source="e: \\xx.mdb";User ID=Admin;Password=;Jet OLEDB:Database Password=123456')...access表名  
SELECT * into sql表名 FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0', 'Data Source="e: \\xx.mdb";User ID=Admin;Password=;Jet OLEDB:Database Password=123456')...access表名


注:'sql表名' 不要事先建好!!!
二:Excel數據
   1、向現有表中導入數據
Sql代碼 復制代碼  收藏代碼
  1. INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)  
INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

  2、導入數據並新增表
Sql代碼 復制代碼  收藏代碼
  1. SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)  
SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

  3、導入部分列到表中
Sql代碼 復制代碼  收藏代碼
  1. INSERT INTO 表 (a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)  
INSERT INTO 表 (a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)

三:過程中遇到的問題備忘
   1、查不出來
     1.1:
引用
消息 15281,級別 16,狀態 1,第 1 行
SQL Server 阻止了對組件 'Ad Hoc Distributed Queries' 的 STATEMENT 'OpenRowset/OpenDatasource' 的訪問,因為此組件已作為此服務器安全配置的一部分而被關閉。系統管理員可以通過使用 sp_configure 啟用 'Ad Hoc Distributed Queries'。有關啟用 'Ad Hoc Distributed Queries' 的詳細信息,請參閱 SQL Server 聯機叢書中的 "外圍應用配置器"。

http://blog.csdn.net/the_pain/archive/2009/04/23/4103518.aspx
     1.2:環境是:windows server 2008 r2  ,sql server 2008 查詢時報:
引用
消息 7308,級別 16,狀態 1,第 2 行
因為 OLE DB 訪問接口 'Microsoft.Jet.OLEDB.4.0' 配置為在單線程單元模式下運行,所以該訪問接口無法用於分布式查詢。

      解決:1、下載64位驅動 http://www.microsoft.com/en-us/download/details.aspx?id=13255
            並將連接字符改成:Microsoft.ACE.OLEDB.12.0
   2、excel 導入庫中為科學計算法顯示
http://xinming-me.iteye.com/blog/1490522
   網上的方法有可能還解決不了導入后是科學計算顯示
   在生成excel時將所有內容轉成字符或文本形式,比如,我是從查詢結果中復制的數據,手工拷到excel表中的,我只要保證 查詢出來的結果集 是文本就OK了。

   ->將excel 中的數據復制到 txt中;
   ->再將excel中的數據全部干掉;
   ->全選,設置一下excel 格式為文本
   ->從txt中重新將數據復制到excel表格中
   ->導入

4、表a,b  導入 表x

Sql代碼 復制代碼  收藏代碼
  1. insert into x(cardnum,username,unitprice,zuihougouqiliang,buygasamount,beizhu)   
  2. select a.用戶編號 cardnum,a.用戶姓名 username,a.購氣價格 unitprice,   
  3. b.購氣數量 zuihougouqiliang,b.總氣量 buygasamount,b.備用2 beizhu   
  4. from a left join b on (a.id=b.id)   
insert into x(cardnum,username,unitprice,zuihougouqiliang,buygasamount,beizhu)
select a.用戶編號 cardnum,a.用戶姓名 username,a.購氣價格 unitprice,
b.購氣數量 zuihougouqiliang,b.總氣量 buygasamount,b.備用2 beizhu
from a left join b on (a.id=b.id) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM