乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Oracle中spool命令實(shí)現(xiàn)的兩種方法比較

       fshell 2012-04-12

      Oracle中spool命令實(shí)現(xiàn)的兩種方法比較

      2009-04-21 11:23 佚名 51CTO論壇 我要評(píng)論(0) 字號(hào):T | T
      一鍵收藏,隨時(shí)查看,分享好友!

      在生產(chǎn)中常會(huì)遇到需要將數(shù)量比較大的表值導(dǎo)入到本地文本文件中. 方法有很多種,比較常用的就是spool命令,本文將為大家介紹這個(gè)命令的實(shí)現(xiàn),以及兩種實(shí)現(xiàn)方法的對(duì)比。

      AD:

      要輸出符合要求格式的數(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ò)的可能性,避免走很多彎路。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多