函式FUN_GET_SPOOL_STRING_LHR的內容--spool匯出csv檔案格式

lhrbest發表於2019-04-16


Oracle使用SQL*Plus生成html檔案參考: http://blog.itpub.net/26736162/viewspace-2149543/


     Oracle如何使用spool匯出utf8字符集的文字檔案: http://blog.itpub.net/26736162/viewspace-2639287/


 

匯出 csv 檔案格式

儲存以下內容為 spoolcsv.sql:

set echo on
set trimspool on
set trimout on
set linesize 4000
set pagesize 0
set sqlblanklines on
set feedback off
set serveroutput off
set term off
set echo off
 
 
define data_path=E:\data
 
 
col ymd new_value v_ymd
 
select to_char(sysdate,'YYYYMMDDHH24MISS') ymd FROM dual;
 
spool &data_path\result_&&v_ymd..csv
SELECT substr(t.lie, 3) FROM   (SELECT 0||','||'DEPTNO'||','||'DNAME'||','||'LOC' lie FROM dual a UNION SELECT replace(replace( 1||',' || REPLACE(DEPTNO,',','、')||',' || REPLACE(DNAME,',','、')||',' || REPLACE(LOC,',','、'),chr(10),''),chr(13),'')  from SCOTT.DEPT) t;
spool off
 
 
exit
 
---命令列
--sqlplus lhr/lhr@orcl @f:\sql\spool\spool_csv.sql
 
 
--SELECT fun_get_spool_string_lhr('SCOTT','EMP') FROM DUAL;


其中函式fun_get_spool_string_lhr如下所示:


CREATE OR REPLACE FUNCTION FUN_GET_SPOOL_STRING_LHR(P_OWNER VARCHAR2,
                                                    P_TABLE VARCHAR2)
  RETURN VARCHAR2 AS
  -----------------------------------------------------------------------------------
  -- Created on 2012/11/07 11:33:07 by lhr
  --Changed on 2012/11/07 11:33:07 by lhr
  -- function: 
  /* drop table  XB_COLS_LHR;
  Create Table XB_COLS_LHR(
  id number,
  lie varchar2(4000)
  );*/
  -----------------------------------------------------------------------------------
  V_RETURN  VARCHAR2(32767);
  V_RETURN1 VARCHAR2(32767);
  V_RETURN2 VARCHAR2(32767);
  V_MAX     VARCHAR2(255);
  V_TABLE   VARCHAR2(255) := UPPER(P_TABLE);
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  SELECT COUNT(1)
    INTO V_MAX
    FROM DBA_TAB_COLS C
   WHERE C.TABLE_NAME = V_TABLE
     AND C.OWNER = P_OWNER;
  ---列
  SELECT 'SELECT ' || 0 || '||'',' ||
         TO_CHAR(WMSYS.WM_CONCAT(DECODE(T.COLUMN_ID,
                                        V_MAX,
                                        '''||''' || T.COLUMN_NAME || '''',
                                        '''||''' || T.COLUMN_NAME ||
                                        '''||''')
                                 
                                 )) || ' lie FROM dual a '
    INTO V_RETURN1
    FROM (SELECT C.COLUMN_NAME, C.COLUMN_ID
            FROM DBA_TAB_COLS C
           WHERE C.TABLE_NAME = V_TABLE
             AND C.OWNER = P_OWNER
           ORDER BY C.COLUMN_ID) T;
  --表
  SELECT 'UNION SELECT replace(replace( ' || 1 || '||'',' ||
         TO_CHAR(WMSYS.WM_CONCAT(DECODE(T.COLUMN_ID,
                                        V_MAX,
                                        ''' || REPLACE(' || T.COLUMN_NAME ||
                                        ','','',''、'')',
                                        ''' || REPLACE(' || T.COLUMN_NAME ||
                                        ','','',''、'')||'''))) ||
         ',chr(10),''''),chr(13),'''')  from '|| P_OWNER||'.'|| V_TABLE
    INTO V_RETURN2
    FROM (SELECT C.COLUMN_NAME, C.COLUMN_ID
            FROM DBA_TAB_COLS C
           WHERE C.TABLE_NAME = V_TABLE
             AND C.OWNER = P_OWNER
           ORDER BY C.COLUMN_ID) T;
  IF LENGTH(V_RETURN2) > 2000 THEN
  
    EXECUTE IMMEDIATE 'truncate table XB_COLS_LHR';
    INSERT INTO XB_COLS_LHR
    VALUES
      (1, 'SELECT substr(t.lie, 3) FROM   (' || V_RETURN1);
    INSERT INTO XB_COLS_LHR VALUES (2, V_RETURN2 || ') t;');
    COMMIT;
  
    V_RETURN := '見表 select * from XB_COLS_LHR; ';
  
  ELSE
  
    V_RETURN := 'SELECT substr(t.lie, 3) FROM   (' || V_RETURN1 ||
                V_RETURN2 || ') t;';
  END IF;
  RETURN V_RETURN;
END FUN_GET_SPOOL_STRING_LHR;
/




About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址:

........................................................................................................................

● QQ群號: 230161599 (滿) 、618766405

● weixin群:可加我weixin,我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2019-04-01 06:00 ~ 2019-04-30 24:00 在魔都完成

● 最新修改時間:2019-04-01 06:00 ~ 2019-04-30 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店

小麥苗出版的資料庫類叢書 http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班 http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁 https://lhr.ke.qq.com/

........................................................................................................................

使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2641522/,如需轉載,請註明出處,否則將追究法律責任。

相關文章