请教批量更新,有没有比较靠谱的方式

OVERSET2 2017-04-25 11:05:24
每次通过excel导入用户数据,系统批量去更新,正常的数量一般5W条左右,因为每个用户的数据不一样,所以更新的条件和值肯定不一样的,那么如何大批量去更新这些数据呢?一条条更新效率低下,数据库连接池也承受不了,请问有没有高效、准确的操作方法?谢谢
...全文
134 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
OVERSET2 2017-04-25
  • 打赏
  • 举报
回复
引用 6 楼 diaodiaop 的回复:
按照你说的 xls导入到临时表 几行代码就搞定了. 然后 你写一行 update就能搞定的事 , 你还想要怎么优化? 用意念可以吗??
我说了优化?我说想知道有没有更好的方法
by_封爱 版主 2017-04-25
  • 打赏
  • 举报
回复
哦不对.. 几行代码我都说多了... 其实就2行代码.

insert xxoo select * from openrowset........

update a set a.xxx....from  xxoo  ....where ...
by_封爱 版主 2017-04-25
  • 打赏
  • 举报
回复
按照你说的 xls导入到临时表 几行代码就搞定了. 然后 你写一行 update就能搞定的事 , 你还想要怎么优化? 用意念可以吗??
OVERSET2 2017-04-25
  • 打赏
  • 举报
回复
引用 3 楼 diaodiaop 的回复:
首先我先问你一下.
引用
一条条更新效率低下,数据库连接池也承受不了
这个结论是谁告诉你的?还是你自己测试5W次连接数据库发生了错误?还是只是"想象"出来的"数据库连接池承受不了"? 没经过测试的话 这种话最好别说..万一某个人搜索到了此帖相信了你呢? 其次我们说你这个需求.如果是我 我会这样做. 先把数据库的读取出来到dt1中. 在把xls读取出来到dt2中. 然后循环判断生成最终的dt3 然后删除数据库本身的dt1,然后采用SqlBulkCopy把dt3writetoserver到数据库中... 如果你要说高效,准却..我觉得我这个方式还算可以....
单条数据更新本来就是频繁的打开关闭数据库,这难道不算消耗? 再者我这里是在问别人问题,不算写经验,我无法对别人负责。 你的方案也不好,为何不把数据导入临时表任何几个select得到有效数据,最后来个update,轻松解决。
引用 3 楼 diaodiaop 的回复:
首先我先问你一下.
引用
一条条更新效率低下,数据库连接池也承受不了
这个结论是谁告诉你的?还是你自己测试5W次连接数据库发生了错误?还是只是"想象"出来的"数据库连接池承受不了"? 没经过测试的话 这种话最好别说..万一某个人搜索到了此帖相信了你呢? 其次我们说你这个需求.如果是我 我会这样做. 先把数据库的读取出来到dt1中. 在把xls读取出来到dt2中. 然后循环判断生成最终的dt3 然后删除数据库本身的dt1,然后采用SqlBulkCopy把dt3writetoserver到数据库中... 如果你要说高效,准却..我觉得我这个方式还算可以....
我之所以再这里提问,是想知道是否有更优的方法。
OVERSET2 2017-04-25
  • 打赏
  • 举报
回复
引用 3 楼 diaodiaop 的回复:
首先我先问你一下.
引用
一条条更新效率低下,数据库连接池也承受不了
这个结论是谁告诉你的?还是你自己测试5W次连接数据库发生了错误?还是只是"想象"出来的"数据库连接池承受不了"? 没经过测试的话 这种话最好别说..万一某个人搜索到了此帖相信了你呢? 其次我们说你这个需求.如果是我 我会这样做. 先把数据库的读取出来到dt1中. 在把xls读取出来到dt2中. 然后循环判断生成最终的dt3 然后删除数据库本身的dt1,然后采用SqlBulkCopy把dt3writetoserver到数据库中... 如果你要说高效,准却..我觉得我这个方式还算可以....
单条数据更新本来就是频繁的打开关闭数据库,这难道不算消耗? 再者我这里是在问别人问题,不算写经验,我无法对别人负责。 你的方案也不好,为何不把数据导入临时表任何几个select得到有效数据,最后来个update,轻松解决。
by_封爱 版主 2017-04-25
  • 打赏
  • 举报
回复
首先我先问你一下.
引用
一条条更新效率低下,数据库连接池也承受不了
这个结论是谁告诉你的?还是你自己测试5W次连接数据库发生了错误?还是只是"想象"出来的"数据库连接池承受不了"? 没经过测试的话 这种话最好别说..万一某个人搜索到了此帖相信了你呢? 其次我们说你这个需求.如果是我 我会这样做. 先把数据库的读取出来到dt1中. 在把xls读取出来到dt2中. 然后循环判断生成最终的dt3 然后删除数据库本身的dt1,然后采用SqlBulkCopy把dt3writetoserver到数据库中... 如果你要说高效,准却..我觉得我这个方式还算可以....
正怒月神 2017-04-25
  • 打赏
  • 举报
回复
shoppo0505 2017-04-25
  • 打赏
  • 举报
回复
分开做. 先导入数据库临时表,在数据库中对比后再操作

110,534

社区成员

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

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

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