问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

oracle 如何把表导出csv2

发布网友 发布时间:2023-10-10 01:45

我来回答

1个回答

热心网友 时间:2024-12-01 13:41

存储过程

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;

述存储过程 SQL_TO_CSV 需要了解oracle中的utl_fiel、directory 的知识

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
江西蓝天学院和赣江职业技术学院哪个好? 江西有什么好的中专学校 什么是单点登录(SSO),以及单点登录的实现流程 前端实现单点登录(SSO) 前端单点登录如何实现 面试官:来说说单点登录的三种实现方式 为什么很多人不买哈弗H9 座机如何开通国内长途 座机如何申请 辽宁省出租车手续怎么办? 一年级小学生要打什么疫苗?1 福特锐际和大众探岳怎么选?看动力看配置谁更务实 小学 一年级 打针3 选车纠结症!福特锐际和大众探岳怎么选?2 地球上看到的星星都是银河系的吗?426 朋友公司上市,说给我100万的原始股,预计1到3个月上市,上...13 哪些花有都有哪些特点849 建行不是本人去取款是代别人取款可以吗知道密码就不是本人取:请建行专... 直销中的PV值是什么意思4 王林大师是怎么回事?真的有气功存在么?2403 王林答应别人的靠山石,“保你一辈子不倒”,他为什么敢怎么说?1 无锡市安镇邮编是1 索尼RX100M6有哪些拍摄模式?5 ...Illustrator CS5 怎样能让放大后变模糊的图片变清晰 如何不用手机号码注册?981 跑百米,土道跑十二秒,上塑胶道跑多少呢 怎么样如何不用手机号注册?462 平安信用卡商城买手机发货速度快吗?1 黑虎灵官为何许神仙?是道教还是佛教?身边有伴童吗?叫什么名字...70 平安信用卡商城买手机有保障吗? 关于魔兽世界付费转区问题 福特锐际杠上大众探岳,你要怎么选? 福特锐际顶配值得购买吗? 大众探岳330TSI和福特锐际ST-Line怎么选? 孕妇可以喝QQ星儿童成长牛奶吗 恒顺有大瓶装白醋吗? 如何mount windows下的共享目录3 redhat linux 6.0 挂载WINDOWS网络文件... 有谁知道,海归留学生赚钱的办法? 请问一下创业商业项目实操案例哪里能学到啊? 索尼RX100M6多大,方便外出携带吗? 马云那么聪明一个人,为什么会去相信王林、李一等“大师”?背后...148 什么是PV值1 ...不通存通兑的,请问别人可以拿着我的身份证去银行取钱吗 地球上的碳都到哪儿去了 阅读答案30 请问石桥铺到新桥医院的公交车有没有 地球上的碳都到哪儿去了 袁越 阅读答案19 从石桥铺到新桥医院坐什么车的 要坐好久的?4 问从陈家坪车站到新桥医院怎么走.几路车可到5 一年级节目中哪集有孩子打针2