搬磚頭

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

          Oracle SPOOL的兩種方法之對比

          Posted on 2007-07-25 00:01 生活在別處 閱讀(1621) 評論(0)  編輯  收藏 所屬分類: Oracle
          通常情況下,我們使用SPOOL方法,將數據庫中的表導出為文本文件的時候會采用兩種方法,如下述:
          方法一:采用以下格式腳本 
          set colsep '' ------設置列分隔符
            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
          比較以上方法,即方法一采用設定分隔符然后由sqlplus自己使用設定的分隔符對字段進行分割,方法二將分隔符拼接在SELECT語句中,即手工控制輸出格式。
          在實踐中,我發現通過方法一導出來的數據具有很大的不確定性,這種方法導出來的數據再由sql ldr導入的時候出錯的可能性在95%以上,尤其對大批量的數據表,如100萬條記錄的表更是如此,而且導出的數據文件狂大。
          而方法二導出的數據文件格式很規整,數據文件的大小可能是方法一的1/4左右。經這種方法導出來的數據文件再由sqlldr導入時,出錯的可能性很小,基本都可以導入成功。
          因此,實踐中我建議大家使用方法二手工去控制spool文件的格式,這樣可以減小出錯的可能性,避免走很多彎路。
          本文原創,如有引用,請加鏈接,謝謝!

          原帖地址 
          主站蜘蛛池模板: 大同市| 凭祥市| 贵德县| 宝兴县| 林甸县| 济宁市| 荃湾区| 九江市| 鹤山市| 平乐县| 滨州市| 桂东县| 安阳县| 廊坊市| 银川市| 青州市| 鄂托克旗| 民和| 宜州市| 乐安县| 通海县| 广饶县| 玉溪市| 手机| 滨海县| 娄底市| 大兴区| 孙吴县| 平江县| 隆子县| 香格里拉县| 芦溪县| 开平市| 邹城市| 沭阳县| 元朗区| 砚山县| 偃师市| 砀山县| 景东| 崇阳县|