Table to CSV file

    內容表格
    1. 1. 重要:

    版本為 05:33, 14 Jan 2025

    到這個版本。

    返回到 版本存檔.

    查閱目前版本

    Export specified table to a CSV file

    依需執行下列步驟:

    1. 執行 gen_tab2csv.sql
    2. 編修 csv_${OWNER}.{TABLE}.sql
    3. 執行 csv_${OWNER}.{TABLE}.sql

     

    gen_tab2csv.sql:

    set pagesize 0
    set verify   off
    set feedback off
    set linesize 130
    accept owner    prompt 'Enter table owner => '
    accept tblname  prompt 'Enter table name => '
    spool csv_&&owner..&&tblname..sql
    
    select 'select ' from sys.dual;
    select decode(column_id, 1, column_name, '||'', ''||'||column_name)
    from sys.dba_tab_columns
    where table_name = upper('&&tblname')
    and owner = upper('&&owner')
    order by column_id;
    
    select 'from &&owner..&&tblname;'
    from sys.dual;
    
    spool off
    undefine owner
    undefine tblname
    
    exit;
    

    執行方式

    $> sqlplus system/yourpass @gen_tab2csv.sql
    

    NOTE:

    - 需要輸入要導出的 OWNER 與 TABLE 名稱

    - 執行完後,會在現行目錄內自動建立 csv_${OWNER}.${TABLE}.sql 的 SQL 檔案

    編輯 csv_${OWNER}.{TABLE}.sql:

    set heading off
    set feedback off
    set pagesize 0
    set linesize 800
    
    select ...
    
    exit; 
    

    NOTE:

    在前一個 SQL 建立出來的 csv_XXXX.sql 的原始內容,在上方加上幾個 set 指令,以及在最下方加上 exit;

    執行

    $> sqlplus -s system/yourpass @csv_WIN_FDC_STDB.SYSSETTING.sql | tee WIN_FDC_STDB.SYSSETTING.csv
    

    xxx.csv 就是最後的結果。

    重要:

    為了確保 CSV 檔的每一行內容不會被斷行,可以使用筆數與行數來檢查
    統計 Table 筆數

    Table 筆數
    SQL> select count(*) from WIN_FDC_STDB.SYSSETTING;
    

    統計 CSV 的輸出行數

    $> wc -l WIN_FDC_STDB.SYSSETTING.csv
    

    TIPs:

    兩者必須確保是一樣的,如果不同,表示 CSV 檔有某幾行內容被斷行,修改 csv_XXX.sql 的
    set linesize 800
    將值調大,然後重新導出 CSV 直到行數與筆數相同為止。

    Powered by MindTouch Core