搬磚頭

          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文件的格式,這樣可以減小出錯的可能性,避免走很多彎路。
          本文原創,如有引用,請加鏈接,謝謝!

          原帖地址 
          主站蜘蛛池模板: 桃江县| 迭部县| 嘉义县| 安远县| 思茅市| 溧水县| 天峨县| 乐山市| 温泉县| 开平市| 剑川县| 正镶白旗| 新干县| 桐乡市| 双流县| 松滋市| 遵化市| 玉林市| 上犹县| 河池市| 绥中县| 富锦市| 康保县| 桓仁| 扎鲁特旗| 大姚县| 永德县| 富锦市| 防城港市| 孟州市| 五寨县| 咸宁市| 民丰县| 武平县| 东平县| 佛山市| 桂东县| 利川市| 江陵县| 唐河县| 明光市|