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