1000000条数据怎么插入? 向数据库中插入100000条数据用什么方法比较简单,是用存储过程吗?该怎么写呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Oracle 插入大量数据 循环执行insert into 表名 select * from 表名,这样不知快不快 -- 10万数据,不算大,你想怎么插入,就怎么写!但是有一点:尽量少用循环!-- 其一:如果你是将一个查询语句(执行出来的结果10万)的结果插入另一张表的话,-- 直接用:insert into table_name(col_name1, col_name2, ... col_nameN)select ... (这里是你的查询语句)-- 如果你是想随机创建一些测试数据的话,就用循环10万次,每次将生成一条记录各字段的随机数据插入!-- 环境不同、需求不一样,就灵活应用不同的方法! 如果是文本文件,使用sqlloader速度是最快的,不过使用有点复杂。如果只是一次性操作,使用insert/*+append*/ into table_name 即可;如果是写程序,可以用数组进行批量插入。 insert into select ...statment... --大量数据的插入,我一般这样做:1、alter table tb nologging2、drop index index_name --先删除表上的index,或者禁掉(若有)3、insert /*+append*/ into tb .. --执行插入4、create index index_name on .. --重建index5、alter table tb logging SQL> create table tb(i number);-- Table created. Elapsed: 00:00:00.09 SQL> insert into tb values(1); 1 row created. Elapsed: 00:00:00.01 SQL> insert into tb 2 select * from tb; 1 row created. Elapsed: 00:00:00.01 SQL> / 2 rows created. Elapsed: 00:00:00.01 SQL> / 4 rows created. Elapsed: 00:00:00.00 SQL> / 8 rows created. Elapsed: 00:00:00.01 SQL> / 16 rows created. Elapsed: 00:00:00.01 SQL> / 32 rows created. Elapsed: 00:00:00.01 SQL> / 64 rows created. Elapsed: 00:00:00.00 SQL> / 128 rows created. Elapsed: 00:00:00.01 SQL> / 256 rows created. Elapsed: 00:00:00.01 SQL> / 512 rows created. Elapsed: 00:00:00.00 SQL> / 1024 rows created. Elapsed: 00:00:00.01 SQL> / 2048 rows created. Elapsed: 00:00:00.03 lz 用这种方法 自增 指数增长 很快的log(100000) 次 就可以了 http://blog.csdn.net/mingchaoyan/archive/2011/04/16/6328009.aspx declare v_count number :=1;begin while v_count < 10001 loop ---在这里写你的插入语句 v_count := v_count + 1; end loop;end; 才10W数据的插入,小case,1W条comit oracle expdp问题 sql中使用表别名为什么能加快查询阿? 一条查询语句的存储过程为何无法编译成功 如何恢复被卸载的数据库实例? 请问oracle9i中有没有integer类型? 请问我得oracle为什么总是每次开机自动关闭? 请问怎么安装oracle8.17,100的给! 在SQL*Plus中,exit和quit这两个命令有什么不同?? 关于数据库性能,索引未何不起作用,我用语句跟踪,发现2语句用查询扫描,没有使用索引,为何 各位大佬,望闲暇时间指点一下 求一个sql的写法,高手们进来看看吧,谁能帮我看下,等待====== 求一SQL语句
Oracle 插入大量数据
-- 直接用:
insert into table_name(col_name1, col_name2, ... col_nameN)
select ... (这里是你的查询语句)-- 如果你是想随机创建一些测试数据的话,就用循环10万次,每次将生成一条记录各字段的随机数据插入!-- 环境不同、需求不一样,就灵活应用不同的方法!
--大量数据的插入,我一般这样做:
1、alter table tb nologging
2、drop index index_name --先删除表上的index,或者禁掉(若有)
3、insert /*+append*/ into tb .. --执行插入
4、create index index_name on .. --重建index
5、alter table tb logging
SQL> create table tb(i number);--
Table created.
Elapsed: 00:00:00.09
SQL> insert into tb values(1);
1 row created.
Elapsed: 00:00:00.01
SQL> insert into tb
2 select * from tb;
1 row created.
Elapsed: 00:00:00.01
SQL> /
2 rows created.
Elapsed: 00:00:00.01
SQL> /
4 rows created.
Elapsed: 00:00:00.00
SQL> /
8 rows created.
Elapsed: 00:00:00.01
SQL> /
16 rows created.
Elapsed: 00:00:00.01
SQL> /
32 rows created.
Elapsed: 00:00:00.01
SQL> /
64 rows created.
Elapsed: 00:00:00.00
SQL> /
128 rows created.
Elapsed: 00:00:00.01
SQL> /
256 rows created.
Elapsed: 00:00:00.01
SQL> /
512 rows created.
Elapsed: 00:00:00.00
SQL> /
1024 rows created.
Elapsed: 00:00:00.01
SQL> /
2048 rows created.
Elapsed: 00:00:00.03 lz 用这种方法 自增 指数增长 很快的log(100000) 次 就可以了
http://blog.csdn.net/mingchaoyan/archive/2011/04/16/6328009.aspx
v_count number :=1;
begin
while v_count < 10001 loop
---在这里写你的插入语句
v_count := v_count + 1;
end loop;
end;