今天“被”安排了一个工作。让我把一个有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函数主要实例:
UTL_FILE包主要参考: