搬磚頭

          Knocking on Heaven's Door
          posts - 34, comments - 6, trackbacks - 0, articles - 0

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

          Posted on 2007-07-25 00:01 生活在別處 閱讀(1628) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Oracle
          通常情況下,我們使用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ò)的可能性,避免走很多彎路。
          本文原創(chuàng),如有引用,請(qǐng)加鏈接,謝謝!

          原帖地址 
          主站蜘蛛池模板: 望都县| 四平市| 汾阳市| 昭苏县| 农安县| 会泽县| 迁西县| 洪湖市| 夏河县| 顺平县| 龙川县| 洱源县| 乌拉特中旗| 安庆市| 桂东县| 邵阳市| 白河县| 钟山县| 屏东市| 天全县| 宜丰县| 常山县| 武川县| 馆陶县| 雅江县| 宁阳县| 浏阳市| 新干县| 太原市| 玉屏| 新乡县| 东乡族自治县| 平远县| 抚顺市| 贞丰县| 云南省| 澳门| 临猗县| 长春市| 宁陵县| 水城县|