今天“被”安排了一个工作。让我把一个有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