各位大哥,小弟最近遇到一个问题,关于50w条数据的添加,为了不重复,首先需要查询数据库表里面有没有这条数据,如果没有,便添加。如果使用一般的方法,7、8w条数据的添加都基本要等近1个小时,所以我考虑到线程处理,但是这50w条数据是从Excle中读取的,怎样来分这50w条数据呢?一般多少条数据做为一个线程来添加? 在线等 谢谢
数据库表的字段是这样的1   姓名  性别  年龄  所属单位  地址  地址代码 .....

解决方案 »

  1.   

    我用的是Sql2005 呵呵 但是按道理说,用Thread应该可以提高速度啊。写个存储过程不一定能提高多少速度。各位大哥 麻烦帮帮忙哈
      

  2.   

    如果想一打开就加载的话 可以使用多线程,否则没必要多线程吧,数据库效率就这样了,个人建议弄到sqlserver中去查找 ,建立主索引,这样会快很多,然后再写一个serveice ,在每天服务器压力小的时候,把sqlserver异构数据转换为Excle
      

  3.   

    先把Excel数据导入到SQL的一个临时表中,再使用 insert into select添加到表中导入的话可以使用bcp直接导入
      

  4.   

    楼上的insert into select 就不能判断原有的记录了吧? 如果原来有记录,则不添加。
      

  5.   

    1 .net有一个类叫做SqlBulkCopy,可以快速导入数据到sqlserver中,使用SqlBulkCopy将数据全部导入一个临时表
    2 连接临时表和你要插入的表,可以得到目标表中不存在的结果集,将该结果集直接插入目标表
      

  6.   

    1、查询数据库已经有这条数据时,暂时不要添加,存储到临时到DataSet里面,都查询完后,用Adapter批量更新
    2、查询没有到数据说明要新增,你也临时放到另外一个DataSet,最后用SqlBulkCopy插入
    3、Excel数据太大时,建议每次取若干条
    4、应该新建线程操作
      

  7.   

    我还没写完整嘛,只是过程而已,至于判断,可以使用接上exists