oracel导出多个文件

 

使用UTL_FILE类进行导出多个文件

分类: 数据库相关   70人阅读  评论(0)  收藏  举报
需求:将ALL_OBJECTS按照3000条一个文件进行导出,比如6001条记录,就应该导出三个文件,第一个和第二个文件都是3000条,最后一个文件应该是1条。
下面的例子是使用SCOTT用户下的ALL_OBJECTS为例,除了常见的SPOOL等方式之外,还可以使用UTL_FILE包进行导出,代码大致如下:

--创建一个DIRECTORY UT 指向操作系统中的D盘目录(最好是用具有DBA权限的用户操作)
CREATE DIRECTORY UT AS 'D:\';
--授权读、写
GRANT WRITE,READ ON DIRECTORY UT TO PUBLIC;
--执行下面的PL/SQL块
DECLARE
    V_F1 UTL_FILE.FILE_TYPE;
BEGIN
    --外层循环得到内层循环BETWEEN的最小值和最大值
    FOR J IN (SELECT (LEVEL - 1) * 3000 MINVAL, LEVEL * 3000 MAXVAL
                FROM DUAL
              CONNECT BY LEVEL <=
                         (SELECT COUNT(1) FROM ALL_OBJECTS) / 10000 + 1) LOOP
        V_F1 := UTL_FILE.FOPEN('UT', 'DATA' || J.MAXVAL || '.TXT', 'W');
        --内层循环,获取需要导出的数据
        FOR I IN (SELECT T.OWNER, T.OBJECT_NAME
                    FROM (SELECT ALL_OBJECTS.*,ROW_NUMBER() OVER(ORDER BY OBJECT_NAME) RN FROM ALL_OBJECTS) T
                   WHERE RN BETWEEN J.MINVAL AND J.MAXVAL) LOOP
             --行数据依次写入文件
            UTL_FILE.PUT_LINE(V_F1, I.OWNER || I.OBJECT_NAME);
        END LOOP;
        UTL_FILE.FCLOSE(V_F1);
    END LOOP;
END;
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值