oracle导seq_oracle导出数据最快的方法【原创】

用spool导出数据每导出一行,就会flush一下,所以比较慢。

我把数据全部放在内存中,一次导出,这样就快的多。

缺点是 如果数据量大了的话,也许会死机哦。

创建访问路径:

create or replace directory EXP_DIR  as 'D:\filedir';

赋予权限:

grant read, write on directory exp_dir to zlb

存储过程:

create or replace procedure proc_exp

(

v_filename  in varchar2

)

as

outputfile utl_file.file_type;

v_usernumber   varchar2(20);

v_errorcode    number;

v_errortext    varchar2(200);

begin

outputfile := utl_file.fopen('EXP_DIR',v_filename,'w');

declare cursor cur_sms is

select usernumber  FROM u_userservice;

begin

open cur_sms;

loop

fetch cur_sms into v_usernumber;

exit when cur_sms%notfound;

utl_file.put_line(outputfile , v_usernumber);

end loop;

close cur_sms;

utl_file.fflush(outputfile);

utl_file.fclose(outputfile);

end;

EXCEPTION

WHEN OTHERS THEN

begin

if utl_file.is_open(outputfile) then

utl_file.fclose(outputfile);

end if;

v_errorcode:=sqlcode;

v_errortext:=substr(sqlerrm,1,200);

insert into s_errlog(id,procname,errorcode,v_errortext,errtime)

values(seq_s_errlog_id.nextval,'proc_exp',v_errorcode,v_errortext,SYSDATE);

commit;

end;

end proc_exp;

最后修改于 2006-05-11 23:21

阅读(?)评论(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值