我读excel中的数据,然后用个循环将数据插入倒sql server中,为什么刚开始速度还行,后来越来越慢,内存占用也越来越多,谁能帮忙解释一下,谢谢

解决方案 »

  1.   

    建议你
    CLose;
    SQL.Clear;
    SQL.add(insert 1.............
    SQL.add(insert 2.............
    SQL.add(insert 3.............
    SQL.add(insert 4.............
    ................
    SQL.ExcuSQL;
    把所有的insert语句写成一个,然后提交.
    另外,最好使用事务.
      

  2.   

    with tadoquery.Create(application)  do
        begin
          Connection:= 你的SQLSERVE连接;
          close;
          sql.Clear;
          sql.Add('select * into 临时表 from OpenRowSet(''microsoft.jet.oledb.4.0'',''Excel 8.0;HDR=yes;database=EXCEL文件全路径;'',''select * from [Sheet1$]'')');
          execsql;
          close;
          free;
        end;
    剩下来得应该就不用说了.
    这里有两点要注意,
    excel的第一行读不到的.
    EXCEL文件需要在与SQLSERVER同一机器上.
      

  3.   

    其实使用sqlserver的导入导出功能就可以往sqlserver中导入数据啊,为什么非要自己写程序呢?
      

  4.   

    其实自己写挺好的
    我写了一个是先在access中建一个临时表,将excel的数据读到access的临时表中,再进行导入操作。挺快的
    你还可以选择直接添加导入,更新导入,添加更新同时导入。
      

  5.   

    如果你是通过OLE模式打开的EXCEL文件,那么会越来越慢,因为这种模式其实是调用Excel要简单而且快,最好用Access或者TXT文件,然后批量提交当然通过DTS也行,只是操作上有点复杂,用户不一定接受