批量更新有兩種策略:
第一種方式:拼接所有更新字串,在資料庫一次性執行,這樣減少資料更新時頻繁的連線斷開資料庫。
第二種方式:把要更新的資料寫入資料庫全域性臨時表,然後利用sql語句更新,最後把原表中不存在的資料獲取到再批量寫入。
以下是第二種方式的實現。
該方式中有投機取巧的嫌疑,但是確實能對在單機大批量更新的操作有很大幫助。
1、tablename是要更新資料庫的名稱。
2、datatable是以datatable結構的資料,和被更新的資料表結構一致。
3、idname更新依據,即當id或name相同時更新其餘項。
4、connection資料庫連線字串。
5、本函式有很多寫的不完善的地方,可以自己修改或按照思路重寫。
///
/// 批量更新函式
///
/// 被更新表表名
/// 更新資料庫表新資料
/// 更新依據
/// 資料庫連線字串
static public void sqlbulkupdate(string tablename, datatable datatable, string idname, string connection)
", datetime.today.tostring("yyyymmddhhmmss"));
string temp = string.format("select * into from where 1 = 2;", temptablename, tablename);
sqlcommand command = new sqlcommand(temp, connection);
command.executenonquery();
command.dispose();
sqlbulkcopybydatatable(connection,temptablename, datatable);
stringbuilder stringbuilder = new stringbuilder();
sqlcommand command2 = new sqlcommand(stringbuilder.tostring(), connection);
command2.executenonquery();
command2.dispose();
string insertstr = string.format("select * from as a where a. not in (select b. from as b)", temptablename, tablename, idname);
dataset insertset = execdataset(connection,insertstr);
if (insertset.tables[0].rows.count > 0)
connection.close();
connection.dispose();
}catch (exception e)}}
catch (exception e)
}
SQL Server批量插入批量更新工具類
思路 批量插入,使用sqlbulkcopy 批量更新,定義臨時表,使用sqlbulkcopy批量插入臨時表,用sql語句更新臨時表資料到實際表 定義 批量插入 資料庫表名,不傳表示取泛型t的型別名稱 欄位名陣列,不傳表示取泛型t的所有屬性名稱 public bool sqlbulkcopy ilis...
Python 批量插入SQL Server 資料庫
需要將一批資料插入sql server 資料庫,經過查證可以採用批量插入的方法,遇到一些坑,特記錄一下 批量插入方法如下 sql 1 insert into f rnfl mt2 id,fymdh,ymdh,rn,unitname,comments values data 1,2020 06 10 ...
SqlServer 利用游標批量更新資料
游標在有時候會很有用,在更新一部分不多的資料時,可以很方便的更新資料,不需要再寫乙個小工具來做了,直接寫 sql 就可以了 下面來看乙個實際示例 宣告字段變數 declare regioncode int declare regionname nvarchar 64 declare province...