轉自:http://wenku.baidu.com/view/132530e80975f46527d3e1b0.html
實驗環境: WIN XP , MS Office Excel 2007 , Sql Server 2008
準備數據: Excel文檔 : D:\test\重複出修率.xlsx
方法一:
第一步: 打開SSMS:
【開始】→【所有程序】→【Microsoft Sql Server 2008】→【Sql Server Management Studio】
第二步: 連接數據庫:
在’對象資源管理器’中點擊【連接】→【數據庫引擎】登陸服務器
(P.S:如果沒有看到’對象資源管理器’,點擊左上角的【視圖】→【對象管理器】)
第三步: 登陸成功後,右擊你要導入數據的數據庫名,我這裏數據庫名是’TEST’
右擊【TEST】→【任務】→【導入數據】
這時候會出現一個嚮導:點擊【下一步】
在彈出的窗口中,【數據源】選擇:Microsoft Excel ;
【Excel文件路徑】就選擇你本地電腦存放Excel文檔的路徑,我這裏是D:\test\重複出修率.xlsx
【Excel版本】選擇Excel 2007 (可以根據你office的版本,選擇其他如Excel 2003等等。)
選中【首行包含列名稱】框,最後點擊【下一步】
“首行包含列名稱”是指Excel中的首行數據插入數據庫後將作爲新建表的列名.
在彈出窗口中,【目標】可以採取默認的,【服務器名稱】也是一樣
可以選擇身份驗證,最後選擇你要插入數據到哪個數據庫中。
如我這裏選的是’TEST’ ,選好後點擊【下一步】
如果就把Excel數據插入一個新表,就選擇【複製一個或多個表或視圖的數據】
如果想把Excel數據插入到已存在的一張表中,則選擇下面的【編寫查詢以指定要傳輸的數據】
我這裏是選擇上面一個,然後點擊【下一步】
接着會彈出Excel表中的sheet表名字,如果你沒有修改過sheet表名字,則可能顯示的是’shee1$’, ’shee2$’, ’shee3$’等等.
然後你選中你想要導入的哪張表的數據,我這裏導入的是【’aug$’】
選中後,右邊的【目標】欄位中會出現內容,
dbo是指數據庫的架構名, aug$只是新建的表名,如果你想修改表明,雙擊就可以表明進入編輯狀態就可以修改了。我這裏修改的表名稱爲: aug_info
修改後你也可以點擊【編輯映射】
你可以在這裏修改【目標】,【類型】,是否可以爲NULL,【大小】等建表數據。
修改好後,點擊【確定】,如果不想修改就點擊【取消】
返回上個窗口後,你也可以點擊【預覽】
預覽裏面是Excel表中的一些數據。點擊【確定】,然後點擊【下一步】
在彈出的頁面中,就選中【立即運行】,至於【保存SSIS包】我也不是很清楚幹嘛的。看樣子好像是加密來着。
然後點擊【下一步】
這個窗口就是一些提示信息,點擊【完成】
這個窗口是導入數據提示信息,看來我導入數據成功了。
新建表名爲aug_info,插入數據336行,所在數據庫爲TEST.
點擊【關閉】按鈕就可以了。
然後就是到SSMS中查看是否新生成了aug_info這張表.
刷新【TEST】數據庫或者重新登錄SSMS
在【TEST】數據庫下,查看【表】,發現有個表名是aug_info
進一步確認下,數據是否有誤.
點擊【對象資源管理器】上面的【新建查詢】,
輸入:
use TEST
select COUNT(*) as 有多少行數據 from aug_info
select * from aug_info
前面顯示‘已複製336行’,現在查詢到表中有336行數據。看來這個表就是剛剛從Excel中導入的數據。
OK,大功告成。
很簡單吧,點點鼠標就可以了!
P.S:
前面到這裏的時候,選擇了上面的【複製一個或多個表或視圖的數據】
那下面的【編寫查詢以指定要傳輸的數據】怎麼用呢?
下面我們來試一下,重新導入Excel,到這一步選擇下面按鈕,然後點擊【下一步】
發現這個是用來寫SQL代碼的。這個該怎麼用呢?我也沒用過,百度了下。
這個主要針對從數據庫中導出條件篩選的數據.比如有一張test表,我只想導出表的其中一個字段或者幾個字段的數據.就可以用這個.
select id, name from test where 條件
方法二:
--首先打開SSMS,然後點擊左上角的【新建查詢(N)】,在右邊彈出的窗口中輸入一下代碼:
代碼一:
----------------------------------------------------------------------------------------
use TEST --- ‘TEST’是數據庫名字,你可以切換到你想要的數據庫或直接輸入數據庫名字
----根據系統需要使用這幾段批處理命令打開相應功能
EXEC sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
GO
RECONFIGURE;
GO
----以上爲根據實際情況的可選命令
----開始插入數據到TEST數據庫的一個新表中
select * into newtable_name from
OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source="c:\daoru.xlsx";Extended properties="Excel 12.0;HDR=Yes"')...[sheet1$]
go
P.S:
1:執行這段代碼之前,你需要準備導入的數據。我用的是Excel 2007, Excel文件的名字爲“daoru”,放在C盤目錄下。
2: 代碼中的select * into newtable_name from ... 這是把excel中的數據插入到TEST數據庫中,並同時新建表名爲newtable_name存放插入的數據.
3: 代碼中的Office2007的數據庫驅動爲“Microsoft.Ace.OLEDB.12.0”,
如果是Office2003的話應改成“Microsoft.Jet.OLEDB.4.0”,
還有Office2007中Excel的“Extended properties”中爲“Excel 12.0” 而Office2003爲“Excel 8.0”
4: 代碼中'Data Source="c:\daoru.xlsx" 就是要導入數據的文件存放路徑. (注意後綴:Excel 2007的爲.xlsx;Excel 2003的爲.xls)
5: 代碼中的...[sheet1$] 爲表名,格式爲:[XXX$]或者XXX$,不需要中括號也行,而且表名不能以數字開頭(其實這是幾乎所有編程語言的變量命名規則),切記! 沒有修改過名字的話,Excel默認是shee1,shee2,shee3....
6: 當然,你也可以使導入的數據,不用新建表.而是直接導入到數據庫已有的表中, 只要稍微修改代碼就可以了.
代碼二:
---------------------------------------------------------------------------------------
insert into 已存在的表名 (字段一,字段二) select A,B from
OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source="c:\daoru.xlsx";Extended properties="Excel 12.0;HDR=Yes"')...[sheet1$]
go
---------------------------------------------------------------------------------------
代碼二中,A,B表示的意思是Excel中的A列和B列, 但是直接輸入A,B是沒有用的.
這裏還要提醒一點,導入數據的時候,系統默認Excel的第一行數據是字段名.
所以,你可以把Excel的第一行的前兩列數據改爲A和B,這樣就可以了!
如果Excel中的列數和數據庫中的已存在的表的列數相等,也可以改成如下:
代碼三:
---------------------------------------------------------------------------------------
insert into 已存在的表名 select * from
OpenDataSource('Microsoft.Ace.OLEDB.12.0','Data Source="c:\daoru.xlsx";Extended properties="Excel 12.0;HDR=Yes"')...[sheet1$]
go
---------------------------------------------------------------------------------------