• Oracle 导出CSV文件


    一、创建导出CSV用的存储过程

    CREATE OR REPLACE PROCEDURE SQL_TO_CSV
    (
    P_QUERY IN VARCHAR2, -- PLSQL文
    P_DIR IN VARCHAR2, -- 导出的文件放置目录
    P_FILENAME IN VARCHAR2 -- CSV名
    )
    IS
    L_OUTPUT UTL_FILE.FILE_TYPE;
    L_THECURSOR INTEGER DEFAULT DBMS_SQL.OPEN_CURSOR;
    L_COLUMNVALUE VARCHAR2(4000);
    L_STATUS INTEGER;
    L_COLCNT NUMBER := 0;
    L_SEPARATOR VARCHAR2(1);
    L_DESCTBL DBMS_SQL.DESC_TAB;
    P_MAX_LINESIZE NUMBER := 32000;
    BEGIN
    --OPEN FILE
    L_OUTPUT := UTL_FILE.FOPEN(P_DIR, P_FILENAME, 'W', P_MAX_LINESIZE);
    --DEFINE DATE FORMAT
    EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_DATE_FORMAT=''YYYY-MM-DD HH24:MI:SS''';
    --OPEN CURSOR
    DBMS_SQL.PARSE(L_THECURSOR, P_QUERY, DBMS_SQL.NATIVE);
    DBMS_SQL.DESCRIBE_COLUMNS(L_THECURSOR, L_COLCNT, L_DESCTBL);
    --DUMP TABLE COLUMN NAME
    FOR I IN 1 .. L_COLCNT LOOP
    UTL_FILE.PUT(L_OUTPUT,L_SEPARATOR || '"' || L_DESCTBL(I).COL_NAME || '"'); --输出表字段
    DBMS_SQL.DEFINE_COLUMN(L_THECURSOR, I, L_COLUMNVALUE, 4000);
    L_SEPARATOR := ',';
    END LOOP;
    UTL_FILE.NEW_LINE(L_OUTPUT); --输出表字段
    --EXECUTE THE QUERY STATEMENT
    L_STATUS := DBMS_SQL.EXECUTE(L_THECURSOR);

    --DUMP TABLE COLUMN VALUE
    WHILE (DBMS_SQL.FETCH_ROWS(L_THECURSOR) > 0) LOOP
    L_SEPARATOR := '';
    FOR I IN 1 .. L_COLCNT LOOP
    DBMS_SQL.COLUMN_VALUE(L_THECURSOR, I, L_COLUMNVALUE);
    UTL_FILE.PUT(L_OUTPUT,
    L_SEPARATOR || '"' ||
    TRIM(BOTH ' ' FROM REPLACE(L_COLUMNVALUE, '"', '""')) || '"');
    L_SEPARATOR := ',';
    END LOOP;
    UTL_FILE.NEW_LINE(L_OUTPUT);
    END LOOP;
    --CLOSE CURSOR
    DBMS_SQL.CLOSE_CURSOR(L_THECURSOR);
    --CLOSE FILE
    UTL_FILE.FCLOSE(L_OUTPUT);
    EXCEPTION
    WHEN OTHERS THEN
    RAISE;

    END;

    二、执行存储过程

    1、创建导出directory

    create or replace directory OUT_PATH as '/u03/backup/oracle/dump';

    2、执行导出CSV的存储工程

    EXEC sql_to_csv('select * from DSJ_ZXJC_ZBYQ_XY','OUT_PATH','ODS_MDS.DSJ_ZXJC_ZBYQ_XY.csv');

  • 相关阅读:
    C#中Dictionary的用法及用途
    Spring AOP面向切面编程
    一般处理程序(.ashx)中使用Session
    HTTP 错误 500.0
    IIS7.5和IIS6网站权限配置与区别
    查找和排序-4.选择排序
    查找和排序-3.冒泡排序
    查找和排序-2.二分查找
    查找和排序-1.顺序查找
    汉诺塔问题
  • 原文地址:https://www.cnblogs.com/xibuhaohao/p/13511586.html
Copyright © 2020-2023  润新知