有txt文件包含两列:data型和number型,在数据库中建表两列将txt数据插入表中,在程序中向数据库插入数据,正常步骤为:insert into 表value(...),一条一条的插入,但是如果数据行数超过几千行那将是一件超级慢的工作,如果上万行或更多,那就难以忍受了,请问有什么好方法和好语句能将txt数据更快的插入数据库么?
还有为什么从数据库中读数据那么快,为什么insert时要那么慢?我用的是orcle数据库

解决方案 »

  1.   

    你是要通过程序把这个 txt文件的数据插到数据库中,还是说通过手工的方式把txt文件数据导入到数据库中?
      

  2.   

    你用的啥?1)写程序? 写个程序导入,是不是你有BUG了,1W条很快的吧2)使用第现成工具,sqlldr, pl/sql developer....,  这种也好快的
      

  3.   

    1:SQL Loader
    2:第三方工具PL/SQL DEV
            1、用PL/SQL DEV的TOOLS工具下的“Text Importer”。 
            2、在“Data from Textfile”标签输入TXT文件(output.txt)。 
            3、在“Configuration”下面设置字段数、字段分隔符、行分隔符。 
            4、在“Data to Oracle”标签下选择需要导入的数据库的用户、表。 
            5、在“Fields”下设置TXT字段与目标表字段的对应关系与数据类型。 
            6、点击下面的“Import”即可。 
      

  4.   

    LZ用的是C#的话,上博客园看看吧,博客园讲C#技术很多的。
      

  5.   

    看下这个适合你不。
    先构造一个控制文件。拿你的打个比方如下:
    你的源文件名:/home/user/test.txt;
    源文件两个字段假设已"|"竖线作为分割
    你要插入的表明 table_test(c1 number,c2 date)
    构造一个控制文件:/home/user/test.ctl
    ctl 文件内容如下:load data                                         
    infile '/home/user/test.txt'                      
    truncate into table table_test -- truncate表示插入之前先清空表 append表示在源表记录上追加
    fields terminated by '|'
    (
      c1,
      c2 date "yyyymmddhh24miss",
    )
    然后执行此命令
    sqlldr $ORA_USER/$ORA_PWD@$ORA_TNS control=/home/user/test.ctl direct=true看能否帮到你?
      

  6.   

    如果只是几千条、几万条,用batch是非常快的呀。
      

  7.   

    4楼的这个方法可以!而且很方便:
    第三方工具PL/SQL DEV
      1、用PL/SQL DEV的TOOLS工具下的“Text Importer”。  
      2、在“Data from Textfile”标签输入TXT文件(output.txt)。  
      3、在“Configuration”下面设置字段数、字段分隔符、行分隔符。  
      4、在“Data to Oracle”标签下选择需要导入的数据库的用户、表。  
      5、在“Fields”下设置TXT字段与目标表字段的对应关系与数据类型。  
      6、点击下面的“Import”即可。 
      

  8.   

    通过java进行insert的吗?这样做 效率不高 
    可以在oracle里 写个过程 在过程里面使用utl_file对文本数据进行insert
    如果效率要求很高的话 就要通过sqlloader了