求上百万的数据高效插入到数据库中某张表 目前面临着一个项目需求,是用java做的,针对500W条记录数据存放在外部文本文件中,需要高效的插入到数据库中某个表中(比如说test表中),最容易想到的方式先把数据某一条记录读入到bufferReader中,然后执行insert语句插入到test表中,但是由于数据量很大,这样做效率极差,不知道有没有一种高效的方法使得文本中所有的数据均插入到该表中。(本人知道要进行sql优化,但是不是太理想,想听听高手们是如何解决的)。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你文本文件的数据时什么样的格式如果是统一的那就还好办 否则就....aaa,bbb,ccc123,344,444...看下这个http://free-bird816.javaeye.com/blog/441238 外部表和sqlldr的原理是一样的,不过外部表要方便些。 这个插入500w的数据到某张表是每天都做得么?一次性的工作,就不要特别在意性能了,能做好就行了。如果这个工作特别频繁,可以自己写程序多线程并发,每个线程取3k-5k的数据,至于需要多少个线程,这个就需要根据服务器的配置,如内存,CPU,等等设置,达到系统最大的吞吐量即可。 别让你的java程序做这些,直接将文件传输到数据库服务器,用oracle自己的工具导入。 外部表并行APPENDNOLOGGING 导入数据楼上的说了,我想也就是外部表和SQLLoader另外,追求效率的话,要关闭日志,去掉索引和尽可能消除外键的限制。 如果对数据有信心,就把各种索引外键日志等等的操作全去掉,然后PARALLEL,APPEND,速度还可以的。我们上一个项目每天晚上跑流程,都是几百W数据搬来搬去。 关于姓名去空格,求各位指导下思路,初学者 一个oracle SQL语句迷惑 oracle动态行转列 出现符号‘EXCEPTION’ 在需要下列条件之一 SQL文 請問下面業務的SQL如何寫 Oracel CD 清单,请大侠帮忙看看都是些什么东东? PL/SQL存储过程中能否调用truncate table操作? 视图与临时表的区别 32位的win7装了Oracle11g标准版,开始菜单不显示Oracle11ghome 求助系统表与数据表关联语句 天哪!一个Oracle吃了我9G内存,感兴趣的进来看!!!
如果是统一的那就还好办 否则就....
aaa,bbb,ccc
123,344,444
...
看下这个
http://free-bird816.javaeye.com/blog/441238
一次性的工作,就不要特别在意性能了,能做好就行了。
如果这个工作特别频繁,可以自己写程序多线程并发,每个线程取3k-5k的数据,至于需要多少个线程,这个就需要根据服务器的配置,如内存,CPU,等等设置,达到系统最大的吞吐量即可。
并行
APPEND
NOLOGGING
我想也就是外部表和SQLLoader
另外,追求效率的话,要关闭日志,去掉索引和尽可能消除外键的限制。