ORCLE導出大量數據到txt

分類:編程 時間:2016-11-03
ORCLE導出大量數據到txt   方法一:使用SQLPlus的spool命令  操作步驟  1. 新建一個腳本文件,存放起來,如D:\spool.sql,具體代碼如下 
Sql代碼  
set echo off --在用start命令執行一個sql腳本時,是否顯示腳本中正在執行的SQL語句  
set feedback off --是否顯示當前sql語句查詢或修改的行數  
set newpage none --會在頁和頁之間沒有任何間隔  
set verify off --  
set pagesize 0 --分多少頁  
set term off --在用spool命令將一個大表中的內容輸出到一個文件中時,將內容輸出在屏幕上會耗費大量的時間,設置set termspool off後,則輸出的內容只會保存在輸出文件中,不會顯示在屏幕上,極大的提高了spool的速度。  
set trims on --將SPOOL輸出中每行後面多余的空格去掉   
set linesize 600 --設置屏幕顯示行寬,默認100   
set heading off --禁止輸出列標題   
set timing off --默認為OFF,設置查詢耗時,可用來估計SQL語句的執行時間,測試性能  
set numwidth 38  
SPOOL D:\aaa.txt  
select UserTelNo || ',' || to_char(ReceiveTime,'yyyy-MM-dd HH24:MI:SS') || ',' || UserContent || ',' || ReplyContent FROM LogSMSHall_Mutual WHERE rownum<=100;  
SPOOL OFF  

 

  註意如果有clob字段的話,最好用to_char函數進行轉換。  2. 用sqlplus登錄到Oracle數據庫  如果是在數據庫本機,直接在命令行(WIN+R->CMD)窗口,輸入“SQLPlus [用戶名]/[密碼]”即可。  如果遠程登錄,在命令行中輸入“SQLPlus [用戶名]/[密碼]@[數據庫IP地址:監聽端口號]/[數據庫實例名稱]”,回車即可。如“sqlplus Ajita/[email protected]:1521/orcl”。  3. 執行腳本文件  在SQLPlus命令窗口中執行步驟1中的腳本文件。命令方式為“@[腳本文件位置]”,如“@D:\spool.sql”    優點:簡單易用  缺點:不容易封裝成存儲過程    方法二:使用UTL_FILE包的文件操作命令  操作步驟(只需要一步,也可以封裝成存儲過程)  編寫PL/SQL過程,導出到txt即可。 
Sql代碼  
DECLARE  
row_result varchar2(1024);  
selectsql varchar2(1024);  
qrycursor SYS_REFCURSOR;  
txt_handle UTL_FILE.file_type;  
BEGIN  
  selectsql := ' select bizname ||''  ''|| bizstatus from bizbusinessbaseinfo ';  
  txt_handle := UTL_FILE.FOPEN('D:/UTL','a.txt','w');  
  open qrycursor for selectsql;  
  loop    
      fetch qrycursor into row_result;  
      exit when qrycursor%notfound;    
      UTL_FILE.PUT_LINE(txt_handle,row_result);  
  end loop;    
  --關閉遊標    
  close qrycursor;  
  UTL_FILE.FCLOSE(txt_handle);  
end;  

 

  註意事項:  如果沒有設置參數utl_file_dir參數,本方法會報ora 29280的錯誤,解決方案有兩種。  1. 設置utl_file_dir參數,兩種方式:  a) 在init.ora中設置,直接修改文件即可  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:\temp,'c:\my    temp'       設置完必須重新啟動數據庫    2. 創建自己的目錄(不需要重啟數據庫)  在命令行中執行命令create or replace directory MY_DIR  as 'c:/abc';即可。然後調用的時候,把frw:=utl_file.fopen('c:\abc','emp.txt','w');改成frw:=utl_file.fopen('MY_DIR','emp.txt','w');註意MY_DIR要大寫。    優點:容易封裝成存儲過程  缺點:要使用UTL_FILE配置,稍微復雜點 
Tags:

文章來源:


ads
ads

相關文章
ads

相關文章

ad