Insert数据的方法
来源:互联网 发布:买二手手机的软件 编辑:程序博客网 时间:2024/05/20 12:48
批量处理一般用在ETL操作, ETL代表提取(extract),转换(transform),装载(load), 是一个数据仓库的词汇!
类似于下面的结构:
for x (select * from...)
loop
Process data;
insert into table values(...);
end loop;
loop
Process data;
insert into table values(...);
end loop;
一般情况下, 我们处理大笔的数据插入动作, 有2种做法, 第一种就是一笔笔的循环插入
create table t1 as select * from user_tables where 1=0;
create table t2 as select * from user_tables where 1=0;
create table t3 as select table_name from user_tables where 1=0;
create table t2 as select * from user_tables where 1=0;
create table t3 as select table_name from user_tables where 1=0;
create or replace procedure Nor_Test
as
begin
for x in(select * from user_tables)
loop
insert into t1 values x;
end loop;
end;
as
begin
for x in(select * from user_tables)
loop
insert into t1 values x;
end loop;
end;
第2种方法就是批量处理(insert全部字段):
create or replace procedure Bulk_Test1(p_array_size in number)
as
type array is table of user_tables%rowtype;
l_data array;
cursor c is select * from user_tables;
begin
open c;
loop
fetch c bulk collect into l_data limit p_array_size;
forall i in 1..l_data.count
insert into t2 values l_data(i);
exit when c%notfound;
end loop;
end;
as
type array is table of user_tables%rowtype;
l_data array;
cursor c is select * from user_tables;
begin
open c;
loop
fetch c bulk collect into l_data limit p_array_size;
forall i in 1..l_data.count
insert into t2 values l_data(i);
exit when c%notfound;
end loop;
end;
insert部分字段:
create or replace procedure Bulk_Test2(p_array_size in number)
as
l_tablename dbms_sql.Varchar2_Table;
cursor c is select table_name from user_tables;
begin
open c;
loop
fetch c bulk collect into l_tablename limit p_array_size;
forall i in 1..l_tablename.count
insert into t3 values (l_tablename(i));
exit when c%notfound;
end loop;
end;
as
l_tablename dbms_sql.Varchar2_Table;
cursor c is select table_name from user_tables;
begin
open c;
loop
fetch c bulk collect into l_tablename limit p_array_size;
forall i in 1..l_tablename.count
insert into t3 values (l_tablename(i));
exit when c%notfound;
end loop;
end;
在性能方面批量处理有着很大的优势, p_array_size一般默认都是100
- Insert数据的方法
- excel数据变成insert 脚本的方法
- 导出数据、生成SQL INSERT的方法。
- insert插入数据的多种方法
- 一次Insert插入多条数据的方法
- 根据MySQL表数据导出INSERT INTO语句的方法
- 数据的update/insert, 可以用BATCH UPDATE方法
- vector的insert方法
- vector的insert方法详解
- 表里有一些默认的数据 用什么方法生成一条一条的insert into语句
- 【转载】在mysql中获取insert插入数据的id的方法SELECT LAST_INSERT_ID();
- mysql批量insert数据的几种方法的效率比较
- (转)根据表中数据生成insert语句的存储过程(另一种方法)
- extjs JSONStore的load事件/insert,add方法应用 如何动态改变显示数据
- extjs JSONStore的load事件/insert,add方法应用 如何动态改变显示数据
- SSM项目中使用mybatis insert返回数据ID的方法
- 执行数据导入的Bulk Insert与Insert Into
- StringBuffer的insert()方法和append()方法
- 每个 MySQL 开发者都应该了解的 12 个技巧
- 新视野OJ 2705 [SDOI2012]Longge的问题 (数论)
- 最近技术方向有点乱
- android 屏幕适配问题
- Oracle虚拟化设备曝光 挑战NetApp和EMC
- Insert数据的方法
- 记录下c++学习吧
- 甲骨文推出Oracle虚拟计算设备
- cuda编程基础
- Android 页面回调跳转(startActivityForResult)
- Linux流量监控工具使用总结 - iftop
- no more talk, just run it
- 上海苏杭乌镇游记
- cuda 初学大全