如何在十分钟内插入1亿条记录到Oracle数据库?

摘要:
这个方法很简单,就是要利用APPEND提示,方法就是需要有个序列表,来辅助数据生成。需要注意的问题:1.插入数据时,表上不要建立索引2.可以在数据插入完毕后,通过nologging和parallel来创建索引3.这里默认是1万条记录提交一次,可以改的更大,应该会更快4.APPEND方式插入数据后,必须要提交后才能对表进行其它操作5.生成的数据的每个字段都是可以根据自己的需要灵活产生的

这里提供一种方法,使用 APPEND 提示,使得十分钟内插入上亿数据成为可能。

-- Create table

create table TMP_TEST_CHAS_LEE

(

f01 VARCHAR2(20),

f02 NUMBER(10) not null,

f03 VARCHAR2(21),

f04 VARCHAR2(21),

f05 NUMBER,

f06 NUMBER(20)

);

--创建一个临时表,用于提供序列号

CREATE GLOBAL TEMPORARY table t_sequence_num(

sequenceNum number(8) not null

)

ON COMMIT PRESERVE ROWS;

--开始插入数据

begin

--先生成1万个序号

delete from t_sequence_num;

for i in 0..9999 loop

insert into t_sequence_num(sequenceNum) values(i);

end loop;

--使用APPEND提示,每次1万条,进行数据插入

for i in 1..10 loop

insert /*+ append */ into TMP_TEST_CHAS_LEE

(f01, f02, f03, f04, f05, f06)

select

8613800000000 + i * 10000 + t_sequence_num.sequencenum as MSISDN,

'12106000',

0,

'20120312072000',

'500231891000',

null

from t_sequence_num;

--每批次必须要提交一次

commit;

end loop;

end;

/

可以看出,这种方法的关键是使用了 APPEND 提示,也就是使用了 Direct Path Insert.
效果非常惊人,上亿的数据,十分钟左右就搞定了,也就是说,每秒钟插入了超过10万条以上的记录。
这个方法很简单,就是要利用 APPEND提示,方法就是需要有个序列表,来辅助数据生成。
性能测试人员不用耗费大量的时间来等待测试数据生成了。
需要注意的问题:
1. 插入数据时,表上不要建立索引
2. 可以在数据插入完毕后,通过 nologging 和 parallel 来创建索引
3. 这里默认是1万条记录提交一次,可以改的更大,应该会更快
4. APPEND方式插入数据后,必须要提交后才能对表进行其它操作
5. 生成的数据的每个字段都是可以根据自己的需要灵活产生的

免责声明:文章转载自《如何在十分钟内插入1亿条记录到Oracle数据库?》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇oracle中的exists 和not exists 用法详解关于在虚拟机上安装ubuntu输入不了中文的问题下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

python用sqlite3模块操作sqlite数据库-乾颐堂

SQLite是一个包含在C库中的轻量级数据库。它并不需要独立的维护进程,并且允许使用非标准变体(nonstandard variant)的SQL查询语句来访问数据库。 一些应用可是使用SQLite保存内部数据。它也可以在构建应用原型的时候使用,以便于以后转移到更大型的数据库。 SQLite的主要优点: 1. 一致性的文件格式: 在SQLite的官方文档中是...

Oracle使用——PLSQL查询表结构并导出EXCEL

背景 有一次需要查询Oracle数据库中的所有表接口并且导出excel,方法记录如下 使用 使用PLSQL工具查询表结构,SQL语句如下 SELECTB.TABLE_NAME AS '表名', C.COMMENTS AS '表说明', B.COLUMN_ID AS '字段序号', B.COLUMN_NAME AS '字段名...

oracle hint

Hint概述基于代价的优化器是很聪明的,在绝大多数情况下它会选择正确的优化器,减轻了DBA的负担。但有时它也聪明反被聪明误,选择了很差的执行计划,使某个语句的执行变得奇慢无比。 此时就需要DBA进行人为的干预,告诉优化器使用我们指定的存取路径或连接类型生成执行计划,从 而使语句高效的运行。例如,如果我们认为对于一个特定的语句,执行全表扫描要比执行索引扫描更...

Hive/Impala批量插入数据

问题描述 现有几千条数据,需要插入到对应的Hive/Impala表中。安排给了一个同事做,但是等了好久,反馈还没有插入完成……看到他的做法是:对每条数据进行处理转换为对应的insert语句,但是,实际执行起来,速度很慢,每条数据都要耗时1s左右。比在MySQL中批量插入数据慢多了,因而抱怨Impala不太好用 问题分析 首先,必须明确的是,把每条数据处理成...

MySQL与Oracle的区别

1、Oracle是大型数据库而MySQL是中小型数据库,Oracle市场占有率达40%,MySQL只有20%左右,同时MySQL是开源的而Oracle价格非常高 2、Oracle支持大并发,大访问量,是OLTP最好的工具 3、安装所用的空间差别也是很大的,Mysql安装完后才152M而Oracle有3G左右,且使用的时候Oracle占有特别大的内存空间和其...

小提示:不用数据线连接到Android手机进行调试

Android开发中少不了真机调试,总用数据线插插拔拔的还是不方便也不稳定,其实可以实现WIFI的方式连接android手机。关于Android真机调试还可以看峻祁连的另一篇文章。 1. 当然首先要打开WIFI,手机要和电脑在同一局域网内 2. 在手机上安装AdbWireless(Google Play上需搜一下就有),注意手机是需要root过的 3. 安...