Oracle使用虚拟表dual一次插入多条记录
来源:互联网 发布:姚明cba总决赛数据 编辑:程序博客网 时间:2024/06/05 16:27
Oracle使用虚拟表dual一次插入多条记录
从一个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
- Oracle使用虚拟表dual一次插入多条记录
- Oracle使用虚拟表dual一次插入多条记录
- 【解决方法】Oracle一次插入多条记录
- oracle一次插入多条记录
- 一次插入多条记录
- 一次插入多条记录
- oracle 一次插入多条
- 使用JDBC一次插入多个表、多条记录
- mysql使用游标 触发一次 插入多条记录
- oracle dual(虚拟表)
- 使用Oracle插入语法来插入多条记录
- 使用Oracle插入语法来插入多条记录
- 一次查询多条记录插入另一张表
- 一次插入多条记录 [mysql]
- SQL 一次插入多条记录 例句
- 一次向数据库插入多条记录
- mysql一次插入多条记录问题
- mysql-一次插入多条记录
- 策略模式与工厂模式比较
- 挑选域名需考虑的因素
- 单例模式
- Android 中uri.parse()用法
- Makefile常用函数
- Oracle使用虚拟表dual一次插入多条记录
- Photoview依赖及用法
- RocketMQ运维指令
- 网络图片url转为bitmap
- hadoop配置
- Hololens基础用法
- 如何通过反编译工具与插件 查看java *.class 文件源码
- linux-2.6.32 修改tcp连接数
- JS中map 与 forEach 的对比