从文件读取大量数据插入oracle的效率问题

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

先在此谢过各位!
...全文
573 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
crazy_samba 2013-01-18
  • 打赏
  • 举报
回复
更多例子关于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(*)
----------
        27

SQL> SELECT COUNT(*) FROM TABLE_STAT;

  COUNT(*)
----------
        27

SQL> SELECT COUNT(*) FROM USER_TABLES;

  COUNT(*)
----------
        27
shadow1986a 2013-01-18
  • 打赏
  • 举报
回复
sqlload方式要比INSERT 快的多,你可以试试。另外 INSERT APPEND的方式也比INSERT快。
crazy_samba 2013-01-18
  • 打赏
  • 举报
回复
可以使用'INSERT ALL'来插入多行:
  insert all
  into c_temp values('3')
  into c_temp values('4')
 select * from dual;
DexterL 2013-01-18
  • 打赏
  • 举报
回复
我之前的方法insert的时候试验过1万一提交,10万一提交,100万一提交结果效率都差不多
DexterL 2013-01-18
  • 打赏
  • 举报
回复
sqlload相当快 剩下的工作就是格式化字段了 谢谢两位了

3,490

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧