免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 9852 | 回复: 6
打印 上一主题 下一主题

跪地哭求 oracle中insert大量插入数据的方法!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-14 15:06 |只看该作者 |倒序浏览

小弟目前有两张表a,b
要求:把b表中更新日期>;19980101的数据全部插入a表,b表中这样的数据有50多万条。

小弟的pl/sql语句如下;
insert into a (SELECT * from b where b.gexin_ymd>;19980101);
可是小弟的程序花了近半个小时才插入30001件,给人的感觉就象死机一样,
所以我强行终止了。
请问各位大虾有什么效率高的方法?或者需要更改oracle什么设置?

论坛徽章:
0
2 [报告]
发表于 2004-05-14 15:19 |只看该作者

跪地哭求 oracle中insert大量插入数据的方法!!!

insert /*+append */ into a (SELECT * from b where b.gexin_ymd>;19980101);

论坛徽章:
0
3 [报告]
发表于 2004-05-14 15:57 |只看该作者

跪地哭求 oracle中insert大量插入数据的方法!!!

谢谢大家了!!!

论坛徽章:
0
4 [报告]
发表于 2004-05-14 16:01 |只看该作者

跪地哭求 oracle中insert大量插入数据的方法!!!

首先判断是查询慢还是插入慢。。。
查询条件比较时,最好用内部数据类型。。。DATE,
插入慢的话。。。和你的A表有关系,是空表吗。。
还有就是你的ORACLE配置。。建议找DBA
jilei 该用户已被删除
5 [报告]
发表于 2004-05-14 16:22 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
6 [报告]
发表于 2004-05-15 10:11 |只看该作者

跪地哭求 oracle中insert大量插入数据的方法!!!

“如果是插入慢,试试加入并行参数”
这句话什么意思?能不能具体说个例子看看,谢谢

论坛徽章:
0
7 [报告]
发表于 2004-05-16 12:04 |只看该作者

跪地哭求 oracle中insert大量插入数据的方法!!!

这里oralce要执行的是两个动作。
一个是 返回很大记录数的select
一个是 插入很大记录数的insert

你用一条语句来完成。select 将占据大量内存。你的内存页面就低效地换进换出
而insert 回滚信息会占据大量回滚段.一次提交,对机器的负荷之重可想而之。
应多次提交。

你先建一个临时表。

drop table temp;

create table temp
as select * from b
where gexin_ymd>;'19980101';

DDL语句不占回滚段,对cpu来说,也把select和insert 的负荷分开了,

然后用pl/sql

sql>; declare
sql>;    cursor b_cursor is select * from temp;
sql>;    b_列名一 char(3);      --  根据你表的结构
sql>;    b_列名二 number;     --  列好每一列
sql>;     ...
sql>;     b_列名n  数据类型;
sql>; begin
sql>;  open b_cursor ;
sql>;  loop
sql>;     fetch b_cursor  into b_列名一,b_列名二,...,b_列名n;
sql>;     exit when b_cursor%notfound;
sql>;     insert into a
sql>;     values(b_列名一,b_列名二,...,b_列名n);
sql>;     commit;   -- 及时提交
sql>;  end loop;
sql>;  end;   
sql>;   /
这样一条一条的插入,很平稳。你的机器就全速开进了!!

还有其他的方法:比如把a表先改名,把temp表名该为a
然后exp出来,在把原来的a表名字改回来,
在 imp 刚倒出的表名为a的temp表,加上commit=y 参数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP