搬磚頭

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

          Oracle SPOOL的兩種方法之對比

          Posted on 2007-07-25 00:01 生活在別處 閱讀(1628) 評論(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文件的格式,這樣可以減小出錯的可能性,避免走很多彎路。
          本文原創,如有引用,請加鏈接,謝謝!

          原帖地址 
          主站蜘蛛池模板: 集贤县| 古浪县| 绵竹市| 积石山| 佛教| 泽库县| 洛南县| 海林市| 潢川县| 社会| 游戏| 南宫市| 宝山区| 怀化市| 通江县| 英山县| 镇平县| 惠东县| 林口县| 扎鲁特旗| 特克斯县| 竹北市| 普兰县| 武义县| 安泽县| 翁源县| 东至县| 江安县| 徐州市| 曲水县| 红安县| 曲麻莱县| 平阴县| 资源县| 屯留县| 鄂伦春自治旗| 卫辉市| 郸城县| 桑植县| 清丰县| 长垣县|