C#中一次性大批量插入数据库

linchenyuyin 2013-07-14 11:00:59
大概描述下,C#有string s = 1,2,3,4,5,6,7,8,9,0; 想一次性插入到数据库里面,单次循环一次一次插入的话太慢了,一次插入在几万到十万的数据就非常慢,所以想一次性插入数据库,sql语句这样,insert into table([id],[nameid]) select newid(),'1' union all select newid(),'2' union all union all select newid(),'3' .......,现在就是不知道C#中应该怎么去写循环和数组,因为S的长短不一定,求大神!
...全文
4327 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
更正:OleDbDataAdapter.Adapter.Update(); => OleDbDataAdapter adapter; OleDbCommand cmd = new OleDbCommand("insert ...", connection); cmd.Parameters.Add("col1", OleDbType.Char, 50, "col1"); ... adapter.InsertCommand = cmd; ... adapter.Update();
  • 打赏
  • 举报
回复
OleDbDataAdapter.Adapter.Update();
Nomerciness 2013-07-18
  • 打赏
  • 举报
回复
考虑参数化吧 你这个不太好 每次都需要重新编译SQL语句 参数化可以1000条或者更多条一次提交事务
feng41602213 2013-07-17
  • 打赏
  • 举报
回复
BulkCopy oracle,sqlserver都支持。
Jalan.Wang 2013-07-16
  • 打赏
  • 举报
回复
用BI吧。。。
HooverHuang 2013-07-16
  • 打赏
  • 举报
回复
引用 楼主 linchenyuyin 的回复:
大概描述下,C#有string s = 1,2,3,4,5,6,7,8,9,0; 想一次性插入到数据库里面,单次循环一次一次插入的话太慢了,一次插入在几万到十万的数据就非常慢,所以想一次性插入数据库,sql语句这样,insert into table([id],[nameid]) select newid(),'1' union all select newid(),'2' union all union all select newid(),'3' .......,现在就是不知道C#中应该怎么去写循环和数组,因为S的长短不一定,求大神!
用SqlBulkCopy或者事物是最好的选择
大新 2013-07-16
  • 打赏
  • 举报
回复
生成格式文本,用数据库批导,100万条也就1秒搞定
青雪贝 2013-07-16
  • 打赏
  • 举报
回复
先把数据放到DataTable 再用SqlBulkCopy批量插入
xiaogui340 2013-07-16
  • 打赏
  • 举报
回复
我比较关心循环插入到底是否像LZ说的那样“慢”????
stonespace 2013-07-15
  • 打赏
  • 举报
回复
这不太现实吧,这样的sql语句,如果要插入10万条数据,s字符串长度会大于3M,sqlserver允许这么长的sql语句吗?即使可以,执行速度比循环插入快?
IT小黑马 2013-07-15
  • 打赏
  • 举报
回复
请问是sqlserver数据库吗?可以考虑用SqlBulkCopy
ztszhq 2013-07-15
  • 打赏
  • 举报
回复
使用 sql事务Transaction 进行提交 每1000条进行一次Commit 看是否有帮助
linchenyuyin 2013-07-15
  • 打赏
  • 举报
回复
引用 1 楼 stonespace 的回复:
这不太现实吧,这样的sql语句,如果要插入10万条数据,s字符串长度会大于3M,sqlserver允许这么长的sql语句吗?即使可以,执行速度比循环插入快?
s长度我会控制,不超过1000,应该没问题,我自己测试的,如果发1w,我自己切割成10个1000,插入只需要10次,但是循环的话就是1w次,,速度差的很大
threenewbee 2013-07-15
  • 打赏
  • 举报
回复
s = "1,2,3,..."; sql = "insert into table([id],[nameid]) " + string.Join(" union all ", s.Split(',').Select(x => "select newid(),'" + x + "'"));
f_jason 2013-07-15
  • 打赏
  • 举报
回复
是不是可以考虑将数据转成dataTable,然后用IDbCommand和DataBase.UpdateDataSet方法将DataTable的数据更新到数据库的某个表里面去

110,532

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧