把Excel表中資料匯入資料庫

2022-03-25 07:19:20 字數 1576 閱讀 1367

這是第二次了,市場部那邊又來要求改資料。他們要改的是資料庫某張表中類似商品**等的資料,需要改的地方又多,我們上次是靠新來的兄弟乙個個給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了

把Excel表中的資料匯入資料庫

需求 在實現競價 時,需要把excel表中的資料週期地有條件地匯入到 位表中。這裡結合資料庫作業實現。步驟 1 生成乙個excel表 工作表名稱 website 包含的列 spid,spname,spiniprice,spincextent,spnowprice,spimage,spbidnum,s...

excel匯入資料庫表

資料庫表匯出的excel檔案我給修改了一些資料,現在我想吧這些資料再更新到資料庫表中,讓他們一致,sql server很d疼呀就是匯入進不去,於是乎就寫這麼個儲存過程來簡化一下操作吧。create proc dbo myproc asbegin begin tran declare mycursor...

把Excel的資料匯入到資料庫

將excel作為資料來源,將資料匯入資料庫,是ssis的乙個簡單的應用,下圖是示例excel,資料列是code和name 第一部分,excel中的資料型別是數值型別 1,使用ssdt建立乙個package,建立excel data source component,ssdt會在connection ...