我想将将近2000万条的数据从文件里读出插入到数据库里(半小时内为宜)
现在我是在linux下用proc一条一条的insert然后commit
这样做的效率是100万需要3分钟 预计2000万需要一个多小时
关键这还是空表,将来数据一多还会更慢
所以请问大家有没有好的方案提供给我
我对数据库不是很熟悉,所以大家最好提供给我一些好搜索的知识点
目前我在看sqlload方式,不知这条路可否实现我的需求?先在此谢过各位!oracle数据库linux

解决方案 »

  1.   

    我之前的方法insert的时候试验过1万一提交,10万一提交,100万一提交结果效率都差不多
      

  2.   

    可以使用'INSERT ALL'来插入多行:
      insert all
      into c_temp values('3')
      into c_temp values('4')
     select * from dual;
      

  3.   

    sqlload方式要比INSERT 快的多,你可以试试。另外 INSERT APPEND的方式也比INSERT快。
      

  4.   

    更多例子关于INSERT ALL:
    SQL> INSERT ALL
      2  INTO TABLE_STORAGE VALUES (TABLE_NAME, TABLESPACE_NAME, PCT_FREE, PCT_USED, 
      3  INI_TRANS, MAX_TRANS, INITIAL_EXTENT, NEXT_EXTENT, MIN_EXTENTS, MAX_EXTENTS, 
      4  PCT_INCREASE, FREELISTS, FREELIST_GROUPS)
      5  INTO TABLE_STAT VALUES (TABLE_NAME, NUM_ROWS, BLOCKS, EMPTY_BLOCKS, AVG_SPACE, 
      6  CHAIN_CNT, AVG_ROW_LEN)
      7  SELECT * FROM USER_TABLES;已创建54行。SQL> SELECT COUNT(*) FROM TABLE_STORAGE;  COUNT(*)
    ----------
            27SQL> SELECT COUNT(*) FROM TABLE_STAT;  COUNT(*)
    ----------
            27SQL> SELECT COUNT(*) FROM USER_TABLES;  COUNT(*)
    ----------
            27
      

  5.   

    sqlload相当快
    剩下的工作就是格式化字段了谢谢两位了