<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-314  評(píng)論-209  文章-0  trackbacks-0

    要輸出符合要求格式的數(shù)據(jù)文件只需在select時(shí)用字符連接來(lái)規(guī)范格式。比如有如下表

    SQL>; select id,username,password from myuser;//測(cè)試表
    1 John       1234
    2 Jack       12345
    3 Rose       2345
    4 Joe        384657
    5 Tom        384655
    6 Jordan     384455

    要輸出符合1,John,1234,這樣的數(shù)據(jù)格式就用select id||','||username||','||password||',' from myuser這樣的語(yǔ)句。

    SQL>; select id||','||username||','||password||',' from myuser;
    1,John,1234,
    2,Jack,12345,

    寫(xiě)個(gè)下面這樣的腳本就行可以輸出符合要求格式的數(shù)據(jù)至文件中,不會(huì)含有其它不需要東西,只有數(shù)據(jù)部分。

    --腳本文件名為expmyusr.sql,存數(shù)據(jù)的文件名為e:\exp.txt

    set echo on            --是否顯示執(zhí)行的命令內(nèi)容  
    set feedback off       --是否顯示 *   rows   selected 
    set heading off        --是否顯示字段的名稱(chēng)
    set verify off         --是否顯示替代變量被替代前后的語(yǔ)句。fil
    set trimspool off      --去字段空格
    set pagesize 1000      --頁(yè)面大小
    set linesize 50//linesize設(shè)定盡量根據(jù)需要來(lái)設(shè)定,大了生成的文件也大
    define fil= 'e:\exp.txt'
    prompt *** Spooling to &fil
    spool &fil
    select id||','||username||','||'"'||password||'"' from myuser;
    spool off;

     

    --執(zhí)行過(guò)程
    SQL>; @e:\expmyusr.sql
    *** Spooling to e:\exp.txt
    1,John,"1234"
    2,Jack,"12345"
    3,Rose,"2345"
    4,Joe,"384657"
    5,Tom,"384655"
    6,Jordan,"384455"

    檢查可知結(jié)果符合要求。

    Oracle SPOOL的兩種方法之對(duì)比 

    通常情況下,我們使用SPOOL方法,將數(shù)據(jù)庫(kù)中的表導(dǎo)出為文本文件的時(shí)候會(huì)采用兩種方法,如下述:

    方法一:采用以下格式腳本 

    set colsep '' ------設(shè)置列分隔符
    set trimspool on
    set linesize 120
    set pagesize 2000
    set newpage 1
    set heading off
    set term off
    spool 路徑+文件名
    select * from tablename;
    spool off

    方法二:采用以下腳本

    set trimspool on
    set linesize 120
    set pagesize 2000
    set newpage 1
    set heading off
    set term off
    spool 路徑+文件名
    select col1||','||col2||','||col3||','||col4||'..' from tablename;
    spool off

    比較以上方法,即方法一采用設(shè)定分隔符然后由sqlplus自己使用設(shè)定的分隔符對(duì)字段進(jìn)行分割,方法二將分隔符拼接在SELECT語(yǔ)句中,即手工控制輸出格式。

    在實(shí)踐中,我發(fā)現(xiàn)通過(guò)方法一導(dǎo)出來(lái)的數(shù)據(jù)具有很大的不確定性,這種方法導(dǎo)出來(lái)的數(shù)據(jù)再由sql ldr導(dǎo)入的時(shí)候出錯(cuò)的可能性在95%以上,尤其對(duì)大批量的數(shù)據(jù)表,如100萬(wàn)條記錄的表更是如此,而且導(dǎo)出的數(shù)據(jù)文件狂大。

    而方法二導(dǎo)出的數(shù)據(jù)文件格式很規(guī)整,數(shù)據(jù)文件的大小可能是方法一的1/4左右。經(jīng)這種方法導(dǎo)出來(lái)的數(shù)據(jù)文件再由sqlldr導(dǎo)入時(shí),出錯(cuò)的可能性很小,基本都可以導(dǎo)入成功。

    因此,實(shí)踐中我建議大家使用方法二手工去控制spool文件的格式,這樣可以減小出錯(cuò)的可能性,避免走很多彎路。

    posted on 2009-09-27 09:20 xzc 閱讀(1346) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): Oracle

    評(píng)論:
    # re: Oracle中spool命令實(shí)現(xiàn)的兩種方法比較 2009-09-27 09:21 | xzc
    set trimspool on
    set linesize 120
    set pagesize 2000
    set newpage 1
    set heading off
    set term off
    spool 'd:\exp.txt'
    select owner || ',' || table_name || '..' from all_tables;
    spool off
      回復(fù)  更多評(píng)論
      
    # re: Oracle中spool命令實(shí)現(xiàn)的兩種方法比較 2010-05-10 17:22 | xzc
    sqlplus -s infsett/infsett@odsstat 1>&- <<EOF
    set echo off
    set pagesize 0
    SET LINESIZE 2500
    set trimspool on
    set heading off
    set feedback off
    set termout off
    spool /odsstatfs/groupfile/${file_name}
    select 'START' from dual where rownum <= 1
    union all
    ${table_sql}
    union all
    select 'C::|${file_name}|'||count(*) from (${table_sql});
    spool off;
    exit;
    EOF  回復(fù)  更多評(píng)論
      
    # re: Oracle中spool命令實(shí)現(xiàn)的兩種方法比較 2010-05-10 17:27 | xzc
    spool常用的設(shè)置
    set colsep' ';    //域輸出分隔符
    set echo off;    //顯示start啟動(dòng)的腳本中的每個(gè)sql命令,缺省為on
    set feedback off;  //回顯本次sql命令處理的記錄條數(shù),缺省為on
    set heading off;   //輸出域標(biāo)題,缺省為on
    set pagesize 0;   //輸出每頁(yè)行數(shù),缺省為24,為了避免分頁(yè),可設(shè)定為0。
    set termout off;   //顯示腳本中的命令的執(zhí)行結(jié)果,缺省為on
    set trimout on;   //去除標(biāo)準(zhǔn)輸出每行的拖尾空格,缺省為off
    set trimspool on;  //去除重定向(spool)輸出每行的拖尾空格,缺省為off
      回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 亚洲天天做日日做天天看 | CAOPORM国产精品视频免费| 日韩免费一区二区三区在线| 久久ww精品w免费人成| 亚洲av无码乱码国产精品| 久久精品国产亚洲αv忘忧草| 国产人成亚洲第一网站在线播放| 日本XXX黄区免费看| 亚洲国产韩国一区二区| 青青草a免费线观a| 亚洲精品无码成人片久久不卡| 亚洲AV永久无码精品一福利| 久久精品中文字幕免费| 国产精品久久久久久久久久免费| 一区二区三区亚洲视频| 亚洲理论片在线观看| 国产成人无码精品久久久免费| 亚洲人午夜射精精品日韩| 亚洲日本在线电影| 国产视频精品免费| av网站免费线看| 亚洲日本一区二区| 成人免费一区二区无码视频| 亚洲AV日韩AV无码污污网站| 国产国拍亚洲精品福利| 桃子视频在线观看高清免费视频 | 亚洲乱亚洲乱少妇无码| 久青草视频在线观看免费| 久久精品国产亚洲AV高清热 | 99999久久久久久亚洲| 99精品热线在线观看免费视频 | 国产偷国产偷亚洲清高动态图| 国产一精品一AV一免费| 亚洲一区在线视频| 一本久久综合亚洲鲁鲁五月天| 国精产品一区一区三区免费视频| 亚洲午夜av影院| 99re这里有免费视频精品| 色偷偷尼玛图亚洲综合| 亚洲精品国偷自产在线| 成人毛片18女人毛片免费|