Oracle Batch Export:
创建数据批导出路径
SQL > CREATE DIRECTORY KYLINDIR AS '\\10.80.36.17\D:\ORCL_DATA_EXPORT' ;
SQL > GRANT READ , WRITE ON DIRECTORY KYLINDIR TO EDBADM;
创建存储过程
CREATE OR REPLACE PROCEDURE PRO_EXPORT_TO_CSV( P_DIR IN VARCHAR2)
IS
CURSOR MYCUR IS
SELECT DAY_TIMEKEY,
EQP_ID,
STEP_ID,
PRODUCT_ID,
GLS_TYPE,
GLS_ID,
TACT_TIME
FROM DWT_ARRAY_TT_2019;
MYRECORD DWT_ARRAY_TT_2019% ROWTYPE;
CSV_EXPORT UTL_FILE. FILE_TYPE;
MAX_LINE NUMBER := 10000 ;
OUT_FILE_NAME VARCHAR2( 20 ) ;
BEGIN_TIME NUMBER;
END_TIME NUMBER;
COUNT_NUM NUMBER;
BEGIN
BEGIN_TIME := DBMS_UTILITY. GET_TIME;
OPEN MYCUR;
FOR I IN 1. .999 LOOP
OUT_FILE_NAME := 'ArrayTT' || I || '.csv' ;
COUNT_NUM := 0 ;
CSV_EXPORT := UTL_FILE. FOPEN( P_DIR, OUT_FILE_NAME, 'W' , MAX_LINE) ;
WHILE COUNT_NUM < 10000 LOOP
FETCH MYCUR INTO MYRECORD;
UTL_FILE. PUT_LINE( CSV_EXPORT, MYRECORD. DAY_TIMEKEY || ',' ||
MYRECORD. EQP_ID || ',' ||
MYRECORD. STEP_ID || ',' ||
MYRECORD. PRODUCT_ID || ',' ||
MYRECORD. GLS_TYPE || ',' ||
MYRECORD. GLS_ID || ',' ||
MYRECORD. TACT_TIME ) ;
COUNT_NUM := COUNT_NUM+ 1 ;
FETCH MYCUR INTO MYRECORD;
END LOOP ;
UTL_FILE. FCLOSE( CSV_EXPORT) ;
END LOOP ;
CLOSE MYCUR;
END_TIME := DBMS_UTILITY. GET_TIME;
DBMS_OUTPUT. PUT_LINE( 'TotalTime=' || ( END_TIME- BEGIN_TIME) * 10 || 'ms.' ) ;
END PRO_EXPORT_TO_CSV;
调用存储过程
BEGIN
PRO_EXPORT_TO_CSV( 'KYLINDIR' ) ;
END ;
CALL PRO_EXPORT_TO_CSV( 'KYLINDIR' ) ;