首页新闻找找看学习计划

linq to sql 更新问题

0
悬赏园豆:10 [待解决问题]

数据库中表A有200W条数据,通过excel导入数据进行批量更新,常规的做法是更新前去表A中查询某条符合条件的数据,然后设置某字段的值,这样的话如果excel中有1W条数据就会查询1W次,有没有办法不查询直接更新?

01之间穿梭的主页 01之间穿梭 | 初学一级 | 园豆:25
提问于:2014-05-14 10:30
< >
分享
所有回答(1)
0

应该有一个业务主键,两边是可以对得上的,直接用这个更新,不用再读取。

丁学 | 园豆:18530 (专家六级) | 2014-05-14 10:35

能举个例说明下不?谢谢?我这边更新数据是通过非主键和外键的字段作为条件的

支持(0) 反对(0) 01之间穿梭 | 园豆:25 (初学一级) | 2014-05-14 10:39

@01之间穿梭: 无所谓什么键,只要两边能对得上就可以了。

比如字段有 a b c d四个,然后a字段可以惟一标识一条记录,那么只需要从excel里读取所有记录,然后循环读取,去数据库里执行:
update tb set b=newb,c=newc,d=newd where a=a

就可以了

支持(0) 反对(0) 丁学 | 园豆:18530 (专家六级) | 2014-05-14 10:45

@丁学: 我现在的问题是能读取也能更新,主要是太慢了,表A中有200W条数据,用linq to sql更新数据之前要先查询到某个实体,然后对实体的某属性赋值后提交。我想达到的目的是省去查询这一步,直接更新,linq to sql能做到吗?怎么做?

支持(0) 反对(0) 01之间穿梭 | 园豆:25 (初学一级) | 2014-05-14 10:56

@01之间穿梭: 没用过linq to sql,你这种比较适合直接用sqlcommand,速度快一些。

不过还有更好的方式:直接把excel导入到数据库里,然后用sql语句联表更新

支持(0) 反对(0) 丁学 | 园豆:18530 (专家六级) | 2014-05-14 14:17
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册