版权声明:本文为博主原创文章,未经允许不得转载。 https://blog.csdn.net/Jekin_KE/article/details/84787666
首先我们需要建立一个表为tb_1,在里面添加一个(或多个)字段。这里我只添加一个字段为name并添加一行数据。然后我们可以在这个表中添加百万条数据,方法如下:
一.借助Oracle中的dual表
select * from tb_1,(select level from dual connect by level <= 1000000);
其中dual表是Oracle中的一个虚拟表,用来构成select的语法规则,里面无论什么时候都只有一条记录。这个表的存在是为了方便用户在没有实际表的存在时做各种各样的操作:如查看当前用户,调用系统函数,获得当前系统时间,主机名等等,在这里就不细讲了。
而connect by level是Oracle中一组的关键字,主要是用来进行递归查询,但是也有一个特殊的用法:生成1…n序列。 在这里我们使用这个特殊用法后,能将原表复制出N份记录。
但是注意,当数据量到达449420时会强行中止,系统会报“conncet by内存上限为100MB”的错误:
二.使用xmltable方法
select * from tb_1,(xmltable('1 to 10000'));
在Oracle 10之后开始支持XML数据格式,我们可以用xmltable来进行大量数据复制并且转化成XML数据。但是数据制造非常慢的,一般不需要大量数据复制并转化XML格式的时候,尽量避免用这个方法。结果如下:
三.使用循环语句+自我插入复制
DECLARE
X number;
BEGIN
X:=0;
LOOP
X:=X+1;
insert into tb_1 select *from tb_1;
EXIT WHEN X > 11;
END LOOP;
END;
Oracle中的循环有多种方法,这里我用loop循环,进行表的自我插入,相当于只有一条数据的表自我插入后变成两条数据,二变四,四变八。。。。。当经过N次循环之后,本来表中只有一条数据,现在变成2^N条数据。
这个方法耗时少,速度快,一般要产生批量测试数据时推荐这个办法。结果如下:
以上是在Oracle中批量添加百万条测试数据的常用方法,如果还有别的更好的方法,欢迎各位大神留言补充!