项目中大数据量插入,您是如何做的。
工作几年了,长进不大。在项目中总遇到这样的情况。
刚开始工作:
两个数据库,将一个库中的数据插入到另外一个库中。(肯定不能在数据库操作,因为有业务逻辑。)我就通过SQL先到一个库查询得到DataSet,再循环这个DataSet插入到另外一个库中。数据量不大几百条吧,速度还可以。总想优化下,但不知道啥合适的方案。
现在工作中:
比以前难度加大。同样是两个数据源,同样不能数据库同步。因为一个是webService获取的XML.我先将XML变成实体类。然后在查本地数据库,查询结果是同样的实体类。这实体类有个主键。
然后我就循环、嵌套循环。判断本地库中是否有不存在的XML中的数据。取出结果后。
我再循环插入数据库,天啊。。百万条数据,插入好慢啊。开多个线程效果也不是特别明显。
加入您在项目中遇到这种情况您会怎么处理呢?
谢谢
------解决方案--------------------使用sqlbulkcopy批量插入,速度很快的
------解决方案--------------------SqlBulkCopy 类,它可以通过让DataSet或是DataReader中大量的数据通过数据流直接进行装载,然后可以将这些记录添加到指定的数据表中
我一般大数量处理都是用这个类去处理,你可以尝试下
------解决方案--------------------用存储过程,存储过程是可以有逻辑的嘛.....
------解决方案--------------------第一个问题你可以用sqlblucicopy函数 ADO.NET的,效率非常高,适合大数据量的同步,我测试过,几万条的EXCEL导入,效率提升了几十倍吧 。
第二个问题 我木有看懂 ,随手帮你顶下吧!
------解决方案--------------------SqlBulkCopy
拼接Sql
------解决方案--------------------1.SqlBulkCopy
2.不直接和数据库对比,所有操作在dataset中完成,再用dataApater.update