你只是要把文本文件的内容导入到SQL SERVER中。我认为可以考虑使用SQL SERVER的DATA TRANSFORM SERVICE来做。为文本文件建立好ODBC,然后使用SQL SERVER中的相关功能来完成。
应该都有T-SQL语句可以做到的。

解决方案 »

  1.   

    我试过每千分之一秒打开一个form内存增长,但不足以影响速度。
    所以就table.clear();来说无所谓;
    不过尽可能的少与数据库打交道可以节省时间;
    想法我同意,不过你得代码似乎不能实现;
    我的机器很烂。奔二450的,我不想试.
    帮你up一下吧!
      

  2.   

    to  spring_ok(AFanOfSoccerLottery):
    为文本文件建立好ODBC?具体怎么操作我不会呢,能告诉我详细的方法吗?另外,如果我只能用读文本文件的记录然后入库,有没有更好的方法可以提高速度?
      

  3.   

    to ToBeCharcoal(真想有星星):
    代码我是测试过的,可以执行,但我不知道我的想法是否可以执行?如果可以的话,但是效率并没提高啊,因为我原先是用读一条,然后写一条到数据表,速度差不多哦
      

  4.   

    我想问一下stroller314,你所说的入库时间仅仅是数据插入数据库的时间还是包括数据从文件读取时间,因为我觉得如果包括数据从文件读取时间的话,这本身就很耗时间,因为那样似乎需要许多次I/O。
      

  5.   

    to wrh2001(三叶):
    你说的很对,我测试的时间包括文件读取和入库时间。能有更好的方法吗?
      

  6.   

    用SQLSERVER2000的导入/导出向导,将文本文件导入数据库的一个新表,看看微软的工具速度如何:)
      

  7.   

    用Microsoft Text Driver驱动程序就可以建立文本文件的ODBC了。
      

  8.   

    减少I/O次数肯定可以提高文件读取效率,那需要一次性装载多条数据进内存,但是如果文件过大的话,内存消耗又太大。或者你可以将一个大文件分成多个小文件,一次将小文件数据全部读入,比如Readall方法,我记得在VB中是有这个方法的。然后在内存中通过分隔符来分解数据插入DataRow。
      我觉得瓶颈应该在于文件的读取,因为你一次入10000条的策略应该是对的,或者你还可以试一试一次入20000或者30000条。
      

  9.   

    可以用t-sql的bcp,应该会快很多。
    ===================================================================
    bcp {[[database_name.][owner].]{table_name | view_name} | "query"}
        {in | out | queryout | format} data_file
        [-m max_errors] [-f format_file] [-e err_file]
        [-F first_row] [-L last_row] [-b batch_size]
        [-n] [-c] [-w] [-N] [-V (60 | 65 | 70)] [-6] 
        [-q] [-C code_page] [-t field_term] [-r row_term]
        [-i input_file] [-o output_file] [-a packet_size]
        [-S server_name[\instance_name]] [-U login_id] [-P password]
        [-T] [-v] [-R] [-k] [-E] [-h "hint [,...n]"]
    ===================================================================