DataTable資料批量寫入資料庫三種方法比較

2022-03-08 05:27:56 字數 2070 閱讀 5502

1)   insert迴圈插入;

2)   sqldataadapter.update(dataset,tablename);

3)   sqlbulkcopy.writetoserver(datatable);

1、生成測試的datatable表,表結構如下:

uniqueid(主鍵,自動增長)   |   companyname   |   companycode   |   address   |   owner   |   memo

共6個字段。

sqlconnection sqlconnection = new sqlconnection(connectionstring);

sqldataadapter sqldataadapter = new sqldataadapter("select * from table_1 where 1=2", sqlconnection);

dataset dataset = new dataset();

sqldataadapter.fill(dataset, "table_1");

datatable datatable = dataset.tables[0];

//生成20000條記錄

for (int i = 0; i < 20000; i++)

",i);

datarow["companycode"] = "companycode" + string.format("", i);

datarow["address"] = "address" + string.format("", i);

datarow["owner"] = "owner" + string.format("", i);

datarow["memo"] = "memo" + string.format("", i);

datatable.rows.add(datarow);

} 複製**

2、使用sqlcommand.executenonquery()方法插入

foreach (datarow datarow in datatable.rows)

} 複製**

sqlcommand insertcommand = new sqlcommand("insert into [table_1]([companyname],[companycode],[address],[owner],

)" +

"values(@companyname, @companycode,@address,@owner,@memo)",new sqlconnection(connectionstring));

insertcommand.parameters.add("@companyname", sqldbtype.nchar, 50, "companyname");

insertcommand.parameters.add("@companycode", sqldbtype.nchar, 25, "companycode");

insertcommand.parameters.add("@address", sqldbtype.nchar, 255, "address");

insertcommand.parameters.add("@owner", sqldbtype.nchar, 25, "owner");

insertcommand.parameters.add("@memo", sqldbtype.nchar, 255, "memo");

sqldataadapter.insertcommand = insertcommand;

sqldataadapter.update(dataset, "table_1");

複製**

sqlbulkcopy sqlbulkcopy = new sqlbulkcopy(connectionstring, sqlbulkcopyoptions.useinternaltransaction);

sqlbulkcopy.destinationtablename = "table_1";//資料庫中的表名

sqlbulkcopy.writetoserver(dataset.tables[0]);

複製**

Redis批量寫入資料

生產中的有些場景,我們經常需要大批量的往redis中寫入資料,如果我們採用單條迴圈寫入的話,不僅效率低下,而且可能會出現頻繁的建立和銷毀redis連線,這些都是很不合理的.對此,我們可以採用jedis的父類中的pipelined 方法獲取管道,它可以實現一次性傳送多條命令並一次性返回結果,這樣就大量...

PHP批量寫入資料 批量刪除資料

批量插入可以參考 sql insert into data id,ip,data values for i 0 i 100 i sql join sqls connect mysql query sql 批量刪除多條記錄,對於比較多的資訊,如果沒有批量刪除功能是非常麻煩的。可以加全選核取方塊 連線資...

DataTable批量插入資料庫

最近在將excel中的檔案匯入到資料庫中,用程式進行編寫,由於資料量較大所以速度很慢,後來採用了sqlbulkcopy類,解決了速度的問題,我就insert語句,sqldataadapter.update dataset,tablename sqlbulkcopy.writetoserver dat...