begin
for i in 1 .. 1000000 loop
INSERT INTO "DCA"."TEST_DATA" ("ID", "NAME1", "NAME2", "NAME3")
VALUES ('id_' || i, i, 'nme2_' || i, 'name3_' || i);
end loop;
end;
SELECT * FROM test_data;
SELECT count(*) FROM test_data;
由于项目需求,需要将Excel中的数据进过一定转换导入仅Oracle数据库中。考虑到当Excel数据量较大时,循环Insert语句效率太低,故采用批量插入的方法。在插入操作运行时,会造成系统短暂的“卡死”现象。为了让用户知道插入的状态,需要制作一个进度条来显示插入的进度。
项目中运用的是System.Data.OracleClient。首先将Excel数据通过转换函数转换为DataTable,其中的字段和数据库中相应表格的字段完全对应。
public int Import2Oracle(ISheet sheet, string tablename)
DataTable
数据库做数据库开发或管理的人经常要创建大量的测试数据,动不动就需要上万条,如果一条一条的录入,那会浪费大量的时间,本文介绍了Oracle中如何通过一条 SQL快速生成大量的测试数据的方法。
产生测试数据的SQL如下:
begin
insert into tableName(column1, column2, column3...) values(value1,value2,value3...);
insert into tableName(column1, column2, column3...) values(value1,value2,value3...);
insert into tableName(column1, column2, column3...) values(value1,value2,value3...);
insert int
有时候做实验测试数据用到大量数据时可以用以下方法插入:方法一:使用xmltablecreate table bqh8 as select rownum as id from xmltable('1 to 10000000');select count(*) from bqh8;-----------------------一千万条数据已插入。方法二:使用dual+connect by levelc...
首先我们需要建立一个表为tb_1,在里面添加一个(或多个)字段。这里我只添加一个字段为name并添加一行数据。然后我们可以在这个表中添加百万条数据,方法如下:
一.借助Oracle中的dual表
select * from tb_1,(select level from dual connect by level <= 500000);
当需要对一个非常大的表INSERT的时候,会消耗非常多的资源,因为update表的时候,oracle需要生成 redo log和undo log;此时最好的解决办法是insert数据时, 将表设置为nologging,速度是比较快的。这个时候oracle只会生成最低限度的必须的redo log,而没有一点undo信息。如果有可能将index也删除,重建。先看看实验结果:archivelog操作类型...
WHEN i > 10000000;
INSERT INTO MYTEST."bigdata" ( "a1", "a2", "a3", "b1", "b2", "b3", "c...
需求:数据迁移,从远端数据库查询数据写入到生产库中。遇到问题,数据量为千万级别(具体是6千多万条记录的数据),直接使用insert into 目标表 select * from 数据源表。因为目标表本身有上千万数据,且有主键和索引,导致写表非常慢。执行了5,6个小时还没跑完,第二天看索性plsqldev已经卡死了。只能强行杀掉了plsqldev的进程。再看看数据,一条都没写进去,有点崩溃。。。...
当我们进行测试数据或者进行某种大数据量的时候,可以用一下语句进行大批量插入,
通过我的测试,10万条数据插入时间为7秒左右,100万条记录插入时间为65秒,200万插入为150秒。
我机器配置为 CPU I5 2450M 内存4G 硬盘 西部数据500G 5400转 操作系统为WIN7 64位 ,数据库为ORACLE 11G 64位 插入测试工具为PL\SQL 9.0
declare
i integer; --定义变量
begin
i := 1;
/* 插入数据 */
insert i.