今天“被”安排了一个工作。让我把一个有50W数据表中的数据导出到TXT文件中,每个TXT文件中存放5W条。
当然不写这个过程,数据也是可以导出的。写它只是为了方便。
之前的博文中有用过NTILE函数,测试了一下,可取。
本来导数想用SPOOL。后来经测试,在过程中不可用。后在网上查阅UTL.FILE包可实现,过程写的麻烦。望大家多指教。
CREATE OR REPLACE PROCEDURE P_TEST AS
TEST UTL_FILE.FILE_TYPE;
BEGIN
FOR C1 IN 1 .. 4 LOOP
DECLARE
CURSOR C2 IS
SELECT DEPTNO
FROM (SELECT DEPTNO, NTILE(4) OVER(ORDER BY DEPTNO DESC) OR_1
FROM DEPT)
WHERE OR_1 = C1;
C3 C2%ROWTYPE;
BEGIN
FOR C3 IN C2 LOOP
TEST := UTL_FILE.FOPEN('ABCD', C1 || '.TXT', 'W');
UTL_FILE.PUT_LINE(TEST, C3.DEPTNO);
UTL_FILE.FCLOSE(TEST);
END LOOP;
END;
END LOOP;
END;
NTILE函数主要实例:http://blog.chinaunix.net/uid-26601713-id-3054269.html
UTL_FILE包主要参考:http://www.cnblogs.com/advocate/archive/2011/02/18/1957540.html
转载于:https://blog.51cto.com/orargue/1204873