我现在有六十万条记录需要输入sql2000数据库,方法很简单,就是
query1.append;
query1.post;
我的问题是,用什么办法可以让这个操作以最短的时间完成,因为我大约算了一下,用目前的方法,需要20多小时,谢谢

解决方案 »

  1.   

    记录在那里来?
    看看这里的导入方法有没有适合你的
    http://www.pconline.com.cn/pcedu/empolder/db/sql/0502/551039.html
      

  2.   

    query1.append;
    query1.post;
    不要每一条都post一次
    尽量批量post
    还可以再多开几个线程来存
      

  3.   

    以前我把70几M的txt文件入库就这么弄的,还是比较快....
    嘿嘿
      

  4.   

    多开线程没有用的.因为你的操作对象是目标数据库.1.不要单值 POST
    2.看你以前的数据是什么格式的,最好用导入导出功能想法去实现.
      

  5.   

    建议自己根据文件内容构造SQL语句,然后多条语句执行一次,比如构造100条SQL语句,彼此之间用“;”分割,然后一次性将这100条SQL语句执行,可以有效的防止频繁和数据库进行通讯,提高更新速度!
      

  6.   

    mclkings(网络学子) ( ) 信誉:100    Blog   加为好友  2007-7-5 19:24:24  得分: 0  
     
     
       
    多开线程没有用的.因为你的操作对象是目标数据库.1.不要单值 POST
    2.看你以前的数据是什么格式的,最好用导入导出功能想法去实现.  
    ======================
    可以建成多个数据库,每个数据库同表,然后再把数据倒一下嘛
      

  7.   

    对于MSSQL,建议在这种情况下采用TADOCommand,然后多条insert语句同时提交,各语句之间使用分号(;)分隔,相当于查询分析器当中的"go",如此大概每次提交500/1000条(主要根据数据内容的字节数而定),60W条记录,大概几分钟到几十分钟(关键看机器和网络的性能)。
      

  8.   

    这个我有经验了,你用过vfp吗,先把这些数据导入到vfp中,很快啊,然后再把vfp的库导入到sql server 2000中,就会快很多呀。
      

  9.   

    用bcp.exe或者DTS
    ====================
    可以试着拦截一下bcp或者dts的数据包,它们里面就是多条同时insert
      

  10.   

    BCP应该几分钟可以搞定吧,视服务器配置而定。这个数据不大。以前试着导三千多万条记录的表,好像用了二个小时DTS
      

  11.   

    關鍵是你的这个Query的语句写法了,如果你的语句是一直不变的,那麽越到後來越慢。
    如果你的Query在这个插入過程中,最大時候的記錄数在2000到5000条,那麽速度應當是可观的。
    不知你明白沒有?比如:記錄是按時間排序的,Query的语句中就可加上時間限制,当你的程序判斷其中的記錄已经到5000时,就post,然後关掉Query,重新更换这个時間條件,再一条条插入……
    相信是很快的。
    限制記錄数过小,则條件切換頻繁,速度不快;限制記錄数过大,佔用資源过大,速度也不会快。
      

  12.   

    20个小时?太夸张了吧
    我测试过的,delphi每秒可以插入1000多条数据