熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORCLE導出大量數據到txt

2013-11-13 16:23:21  來源: Oracle 

  ORCLE導出大量數據到txt

  方法一使用SQLPlus的spool命令

  操作步驟

   新建一個腳本文件存放起來如D:\spoolsql具體代碼如下

  ?









Sql代碼  
set echo off 在用start命令執行一個sql腳本時是否顯示腳本中正在執行的SQL語句  
set feedback off 是否顯示當前sql語句查詢或修改的行數  
set newpage none 會在頁和頁之間沒有任何間隔  
set verify off   
set pagesize 分多少頁

  ?












set term off 在用spool命令將一個大表中的內容輸出到一個文件中時將內容輸出在屏幕上會耗費大量的時間設置set termspool off後則輸出的內容只會保存在輸出文件中不會顯示在屏幕上極大的提高了spool的速度  
set trims on 將SPOOL輸出中每行後面多余的空格去掉   
set linesize 設置屏幕顯示行寬默認   
set heading off 禁止輸出列標題   
set timing off 默認為OFF設置查詢耗時可用來估計SQL語句的執行時間測試性能  
set numwidth   
SPOOL D:\aaatxt  
select UserTelNo || || to_char(ReceiveTimeyyyyMMdd HH:MI:SS) || || UserContent || || ReplyContent FROM LogSMSHall_Mutual WHERE rownum<=;  
SPOOL OFF

  注意如果有clob字段的話最好用to_char函數進行轉換

   用sqlplus登錄到oracle數據庫

  如果是在數據庫本機直接在命令行(WIN+R>CMD)窗口輸入SQLPlus [用戶名]/[密碼]即可

  如果遠程登錄在命令行中輸入SQLPlus [用戶名]/[密碼]@[數據庫IP地址:監聽端口號]/[數據庫實例名稱]回車即可sqlplus Ajita/@:/orcl

   執行腳本文件

  在SQLPlus命令窗口中執行步驟中的腳本文件命令方式為@[腳本文件位置]@D:\spoolsql

  優點簡單易用

  缺點不容易封裝成存儲過程

  方法二使用UTL_FILE包的文件操作命令

  操作步驟(只需要一步也可以封裝成存儲過程)

  編寫PL/SQL過程導出到txt即可

  ?






















Sql代碼  
DECLARE  
row_result varchar();  
selectsql varchar();  
qrycursor SYS_REFCURSOR;  
txt_handle UTL_FILEfile_type;  
BEGIN  
  selectsql := select bizname ||  || bizstatus from bizbusinessbaseinfo ;  
  txt_handle := UTL_FILEFOPEN(D:/UTLatxtw);  
  open qrycursor for selectsql;  
  loop    
      fetch qrycursor into row_result;  
      exit when qrycursor%notfound;    
      UTL_FILEPUT_LINE(txt_handlerow_result);  
  end loop;    
  關閉游標    
  close qrycursor;  
  UTL_FILEFCLOSE(txt_handle);  
end;

  注意事項

  如果沒有設置參數utl_file_dir參數本方法會報ora 的錯誤解決方案有兩種

   設置utl_file_dir參數兩種方式

  a) 在initora中設置直接修改文件即可

  b) 在sqlplus命令行設置

  ?




alter system set utl_file_dir=* scope=spfile;

  注意設置utl_file_dir的要點

  utl_file_dir=* 這表示你能操作任何目錄盡量不要用

  utl_file_dir=d:\ 這表示你能操作d:\目錄下的文件但你不能操作d:\目錄下的子目錄

  注意在設置 utl_file_dir=路徑時如果路徑是長路徑名例如c:\my temp目錄則你必須加上例如 utl_file_dir=c:\my temp

  utl_file_dir可以是多個路徑 utl_file_dir=c:\d:\d:\tempc:\my temp

  設置完必須重新啟動數據庫

   創建自己的目錄(不需要重啟數據庫)

  在命令行中執行命令create or replace directory MY_DIR as c:/abc;即可然後調用的時候把frw:=utl_filefopen(c:\abcemptxtw);改成frw:=utl_filefopen(MY_DIRemptxtw);注意MY_DIR要大寫

  優點容易封裝成存儲過程

  缺點要使用UTL_FILE配置稍微復雜點


From:http://tw.wingwit.com/Article/program/Oracle/201311/18248.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.