程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> 把Excel表中數據導入數據庫

把Excel表中數據導入數據庫

編輯:關於Access數據庫
 

這是第二次了,市場部那邊又來要求改數據。他們要改的是數據庫某張表中類似商品價格等的數據,需要改的地方又多,我們上次是靠新來的兄弟一個個給Update進去的,這次老大去教了他們Update語句,把煩人的皮球踢給他們了。但這樣一個個更新很明顯不是辦法,我想通過Excel直接把數據導入數據庫應該是可行的吧,就開始找方法了

我想至少有這樣兩種比較容易實現的方法:
1、直接用Sql語句查詢
2、先用excle中的數據生成xml文件,再把XML導入數據庫

第一種方法(方法二以後再試),找到聯機叢書裡實現此功能的Sql語句如下:

SELECT *
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
  'Data Source="c:\Finance\account.xls";User ID=Admin;PassWord=;Extended propertIEs=Excel 5.0')...xactions
語句是有了,但我還是試了很久,因為各個參數具體該怎麼設置它沒有說。Data Source就是excel文件的路徑,這個簡單;UserId、Password和Extended propertIEs這三個屬性我改成了各種各樣的與本機有關的用戶名、密碼以及Excel版本都不對,最後用上面例子裡的值“User ID=Admin;PassWord=;Extended propertIEs=Excel 5.0”才成功了,暈啊;最後個“xactions”更是查了很多資料,其實就僅僅是excel文件裡所選的工作表名而已,怪我對Excel不夠熟悉了,另外注意默認的Sheet1要寫成[Sheet1$]

最後,看看我成功的測試
數據庫裡建好一個表testTable_1,有5個字段id, name, date, money, content,C盤下book1.xls文件的sheet1工作表裡寫好對應的數據並設好數據類型,執行如下插入語句:

insert into testTable_1 ([name], [date], [money], [content])
Select [姓名], [日期], [金額], [內容]
FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
'Data Source="C:\Book1.xls";
User ID=Admin;PassWord=;Extended propertIEs=Excel 5.0')...[Sheet1$]
select裡的列名我一開始用*代替,但發現輸出順序與我預期的不同,是“金額、內容、日期、姓名”,不知道具體有什麼規律,就老老實實寫名字了。操作成功

回過頭來看看市場部的要求,假設在我這張表裡實現,可以先判斷如excel裡存在與記錄相同的name字段(name要唯一非空)時就刪除記錄,之後再插入,這樣簡單,但自增的id字段會因為插入而改變,那是不行的了。可行的方法是先讀出Excel裡全部記錄,然後用游標一條條分析,如果存在這個 name就更新否則就插入。OK,下次就不用讓他們再對著文檔一條條Update了

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved