从一个CSV文件中读取所有的数据,并且插入到一个Oracle数据库中,并且几分钟内完成,大约有60万条。
网上有人说了,你可以循环insert然后插入几千条以后Commit一次,我靠,你自己试试看!!如果没试过就不要误导别人好吧。
还有人说了,Oracle根本不支持一次多条插入,我靠,你咋不说自己学艺不精呢?

现在给大家介绍一个小技巧,话说在Oracle里有一个很奇特的“表”,名叫Dual。我们就要利用这个Dual来做文章,
首先,你知道 select '1' from dual 是啥结果吗? 对了,结果就是返回1。

其次,你知道

select '1' from dual
union all
select '2' from dual
是啥结果吗? 对鸟,结果是 
1
2
那么,最关键的地方来了,

insert into 表名 (字段1)
select '1' from dual
union all
select '2' from dual

那么这一次就插入了两条数据。当然,如果全字段插入 那个(字段1)还可以省略掉。

下面一个具体例子:

insert into doc_data (code,id,value,state)
        select '13','川A','成都市公安局交通警察支队车辆管理所',0 from dual
union all select '13','川B','绵阳市公安局交通警察支队车辆管理所',0 from dual
union all select '13','川C','自贡市公安局交通警察支队车辆管理所',0 from dual
union all select '13','川D','攀枝花市公安局交通警察支队车辆管理所',0 from dual

最后的实践证明,如果循环60万次Insert,一个小时也执行不完(当然有可能是机器太烂),而拼成1000条Select再插入一次,插入60万条的时间是20分钟,而拼成5000条Select再Insert一次,插入60万条数据的时间是12分钟。
祝你好运。

转载:http://www.cnblogs.com/huangzhen/archive/2011/12/04/2275429.html

处理虚表插入多条是用序列进行插入报错的问题

第一种方法
create or replace function get_seq (p_in_sqname in varchar2) return number
is
l_res number ;
begin
execute immediate 'select '|| p_in_sqname|| '.nextval from dual' into l_res ;
return l_res ;
end ; insert into t_fms_dictionary(id,dic_key,dic_lang,DIC_UPDATABLE,DIC_VALUE)
select get_seq('seq_dictionary_id'), '1','1' ,'1' ,'1' from dual
union all
select get_seq('seq_dictionary_id') , '2','2','2','2' from dual
union all
select get_seq('seq_dictionary_id') , '3','3','3','3' from dual 第二种方法:
insert into t_fms_dictionary(id,dic_key,dic_lang,DIC_UPDATABLE,DIC_VALUE)
select get_seq('seq_dictionary_id'),A.* from (
select '1','1' ,'1' ,'1' from dual
union all
select '2','2','2','2' from dual
union all
select '3','3','3','3' from dual) A

  

最新文章

  1. CSS 外边距合并
  2. JDK错误
  3. QQl聊天消息
  4. Mousetrap - Keyboard shortcuts in Javascript
  5. php分页笔记
  6. JAVA之File类创建对象构造函数传参数需要注意的几点
  7. Graphics.DrawString 方法
  8. CSS3制作
  9. Android media媒体库分析之:MediaProvider
  10. 使用 PHPStorm + Xdebug 实现断点调试(二)
  11. WebGL开发入门
  12. Codeforces 869C The Intriguing Obsession
  13. H5+Ajax+WebApi实现文件下载(进度条,多文件)
  14. log4cxx用环境变量设置输出文件名
  15. [多线程] 生产者消费者模型的BOOST实现
  16. UNIX环境高级编程——system V消息队列
  17. pwnable.tw hacknote
  18. iphone投屏电脑 苹果x用无线充电好不好
  19. python函数之协程与面向过程编程
  20. 【Linux 线程】线程同步《三》

热门文章

  1. c# 关于10进制和16进制转换以及显示
  2. MAC上的包管理利器
  3. VS2013提示error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead.
  4. CSS两端对齐
  5. 项目在JDK1.8环境下的一个Bug
  6. Docker 基础 : 网络配置
  7. (二)Python是一门什么样的语言?
  8. postgresql----serial类型和序列
  9. 一步步优化JVM六:优化吞吐量
  10. [kuangbin带你飞]专题六 最小生成树 POJ 2421 Constructing Roads