数据库中表A有200W条数据,通过excel导入数据进行批量更新,常规的做法是更新前去表A中查询某条符合条件的数据,然后设置某字段的值,这样的话如果excel中有1W条数据就会查询1W次,有没有办法不查询直接更新?
应该有一个业务主键,两边是可以对得上的,直接用这个更新,不用再读取。
能举个例说明下不?谢谢?我这边更新数据是通过非主键和外键的字段作为条件的
@01之间穿梭: 无所谓什么键,只要两边能对得上就可以了。
比如字段有 a b c d四个,然后a字段可以惟一标识一条记录,那么只需要从excel里读取所有记录,然后循环读取,去数据库里执行:
update tb set b=newb,c=newc,d=newd where a=a
就可以了
@丁学: 我现在的问题是能读取也能更新,主要是太慢了,表A中有200W条数据,用linq to sql更新数据之前要先查询到某个实体,然后对实体的某属性赋值后提交。我想达到的目的是省去查询这一步,直接更新,linq to sql能做到吗?怎么做?
@01之间穿梭: 没用过linq to sql,你这种比较适合直接用sqlcommand,速度快一些。
不过还有更好的方式:直接把excel导入到数据库里,然后用sql语句联表更新