在SQL Server的查詢分析器中使用命令匯入Excel表格中的資料

來源:互聯網
上載者:User

excel檔案中有一時間列,混合了文本與時間,如 傍晚 淩晨 12:15 其中 hh:mm居多,使用DTSWizard匯入雖然方便但是hh:mm都變成了NULL,在匯入設定中設定匯入資料類型不能實現。

需要語句實現,下面的語句都可以實現:

 

Microsoft Jet 資料庫引擎可以通過可安裝的索引循序存取方法 (ISAM) 驅動程式,訪問格式為其他資料庫檔案(例如 Excel 活頁簿)的資料。要開啟 Microsoft Jet 4.0 OLE DB 提供者所支援的外部格式,請在串連的擴充屬性中指定資料庫類型。Jet OLE DB 提供者對於 Microsoft Excel 活頁簿支援下列資料庫類型:

Excel 3.0
Excel 4.0
Excel 5.0
Excel 8.0

注意:對於 Microsoft Excel 5.0 和 7.0 (95) 活頁簿,請使用 Excel 5.0 來源資料庫類型;對於 Microsoft Excel 8.0 (97)、9.0 (2000) 和 10.0 (2002) 活頁簿,請使用 Excel 8.0 來源資料庫類型。本文中的樣本使用的是格式為 Excel 2000 和 Excel 2002 的 Excel 活頁簿。 

代碼

1.

SELECT *  into newtable1

FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',

  'Data Source="C:\yyyy_wind.xls";

User ID=;Password=;Extended properties="Excel 8.0;HDR=YES;IMEX=1"')...sheet1$ 

2.

SELECT *   into newtable2

FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',

'Data Source=C:\yyyy_wind.xls;Extended Properties="Excel 8.0;HDR=YES;IMEX=1"')...sheet1$

3.

SELECT *  into newtable3

 FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0',

'Excel 8.0;Database=C:\yyyy_wind.xls;HDR=YES;IMEX=1', sheet1$ )

 

 

這sheet指的是excel預設的sheet1,可以修改,檔案路徑取實際路徑。

網上其實好多資料,但是由於使用OpenDataSource和OPENROWSET都可以實現,又加上雙引號" "單引號''混用,難以搞清楚。關鍵問題是這樣的使用OpenDataSource時,Extended Properties的內容分號間隔並用雙引號括起來,sheet1$ 在括弧外,OPENROWSET相對簡潔.

下面介紹HDR和IMEX兩個參數

HDR為YES,excel檔案的首行作為sqlserver表的列名,為NO則作表的第一行。

IMEX=1 意思是 tells the driver to always read "intermixed" data columns as text

在這裡driver的意思是excel的驅動程式。

Excel 驅動程式讀取指定源中一定數量的行(預設情況下為 8 行)以推測每列的資料類型。如果推測出列可能包含混合資料類型(尤其是混合了文本資料的數值資料時),驅動程式將決定採用佔多數的資料類型,並對包含其他類型資料的單元返回空值。(如果各種資料類型的數量相當,則採用數實值型別。)

Excel 工作表中大部分儲存格格式設定選項不會影響此資料類型判斷。(有說在寫入excel表時就全部設定為文本,可以,囧!)

SQLSERVER2005由於安全性的提高,直接使用上述語句還是有問題的(2000可以直接用)。

按提示進行如下操作:

從開始菜單進入到 組態工具 > sql server 2005 介面區配置器  >  服務和串連的外圍配置器 >  Datebase Engine 啟動服務,然後重啟sqlserver服務。由於sql server 2005沒有了2000那樣工作列右下角的圖表,所以需要通過控制台進入管理工具 >  服務 停止 後啟動 sqlserver 服務。  

然後運行 regedit 進入登錄編輯程式 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers\Microsoft.Jet.OLEDB.4.0 建立DWORD  名為DisallowAdhocAccess 值為0.

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.