使用存储过程将Oracle数据批量导出为多个csv文件

本文介绍了如何使用Oracle的PL/SQL存储过程将数据批量导出为多个CSV文件。每个CSV文件包含四部分内容:obj_id与obj_name组合,obj_size与obj_version的计算值,日期格式的obj_time,以及obj_name本身。方案一是分页查询,每次处理1000条记录,总耗时150秒;方案二是先查询所有100万条记录,再按每1000条写文件。执行存储过程前需创建并授权UTL_FILE的目录。
摘要由CSDN通过智能技术生成

数据库有如下表结构:

aaa ( 

        obj_id          NUMBER,  (Primary Key)

        obj_name   VARCHAR2(80),

        obj_size   NUMBER NOT NULL

        obj_time       NUMBER NOT NULL

        ms_version        NUMBER NOT NULL

)

现在有100万条记录,要求每1000条记录导出为一个csv文件,共计1000个文件,文件名称格式为output0.csv,output1.csv......output999.csv。

每个csv文件每行记录包含:$1, $2, $3, $4四部分内容。

$1 = obj_id|obj_name

$2 = obj_size *10+obj_version

$3 = obj_time in format YYYY-MM-DD HH:mi

$4 = obj_name

要求第一个文件在500ms以内产生出来,后面每个文件生成间隔时间不得大于500ms,速度均匀。

方案一:使用pl/sql存储过程分页查询,每次查询1000条记录写一个文件,实现代码如下:

create or replace procedure export_to_csv(P_DIR IN VARCHAR2)
is
CSV_OUTPUT UTL_FILE.FILE_TYPE;
MAX_LINE NUMBER := 1000;
OUT_FILE_NAME varchar2(20);
OBJ_SIZE NUMBER;
MIN_RECORD N
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值