SPOOL 命令使用實例【oracle導出純文本格式文件】


SPOOL 命令使用實例【oracle導出純文本格式文件】

SET echo off              --在用start命令執行一個sql腳本時,是否顯示腳本中正在執行的SQL語句;

SET feedback off          --是否回顯本次sql命令處理的記錄條數,缺省為on;

SET heading  off          --是否顯示列標題,缺省為on;

SET pagesize 50000        --設置每頁有多少行數,缺省為14。當值設為0時,輸出內容為一頁且不顯示列標題,為了避免分頁,我們通常可設定為0。
SET termout off           --是否在屏幕上顯示輸出的內容,或腳本中的命令的執行結果,缺省為on; 

SET trimout on;        --去除標准輸出每行后面多余的空格,缺省為off; 

SET timing off            --顯示每個sql語句花費的執行時間;

SET trimspool on          --去除重定向(spool)輸出每行的拖尾空格,缺省為off;

SET  NULL text            --顯示時,用text值代替NULL值;

SET serveroutput off   --是否顯示用DBMS_OUTPUT.PUT_LINE包進行輸出的信息;--編寫存儲過程時,大多會將必要的信息輸出;

SET newpage none    --設置頁與頁之間的分隔{1|n|NONE};當值為0時在每頁開頭有一個小的黑方框;當值為n時在頁和頁之間隔着n個空行;當為none時,會在頁和頁之間沒有任何間隔;
SET linesize 1000       --設置一行可以容納的字符數{80|n};輸出內容大於設置的行可容納的字符數,則折行顯示.據實際字符設置,過大導出速度慢;
SET wrap on              --輸出行長度大於設置行長度時(用set linesize n命令設置);值為on時,多余的字符另起一行顯示,否則多余的字符將被切除,不予顯示;

SET verify off            --是否顯示替代變量被替代前后的語句; 

SET  colsep' ';    --域輸出分隔符;

------------------------------------------------------------------------------------------------------

導出文本數據的建議格式:
SQL*PLUS環境設置--

SET echo off               --在用start命令執行一個sql腳本時,不顯示腳本中正在執行的SQL語句

SET heading  off         --不顯示字段的名稱                 

SET pagesize 0          --設置輸出每頁行數,為了避免分頁,可設定為0。設置為0時,輸出內容為一頁且不顯示列標題具有SET heading  off  包含的功能。

SET newpage none    --頁與頁之間沒有分隔                                        
SET trimout on     --去除標准輸出每行后面多余的空格
SET trimspool on        --去除重定向(spool)輸出每行的拖尾空格
SET linesize 1000       --設置一行可以容納的字符數

SET feedback off         --是否回顯本次sql命令處理的記錄條數,缺省為on;

工作運用時導出文本數據的常用格式:

SET echo off  

SET pagesize 0 

SET feedback off 

SET trimout on 

SET trimspool on  

SET linesize 1000 

spool路徑+文件名

需要執行的SQL代碼

spool off

注:linesize要稍微設置大些,免得數據被截斷,它應和相應的trimspool 結合使用防止導出的文本有太多的尾部空格。但是如果linesize設置太大,會大大降低導出的速度,另外在WINDOWS下導出最好不要用PLSQL導出,速度比較慢,直接用COMMEND下的SQLPLUS命令最小化窗口執行。

實例

要求

①導出的過程不在SQL*PLUS屏幕上顯示
②導出的文本中不含有執行的SQL命令
③導出的文本中不含有字段名
④導出的文本中使用逗號(英文)作為字段的分隔符
⑤導出的文本中每行長200個字符
⑥導出的文本中每頁999行
⑦導出的文本中每行后面的空格必須被截取
編寫腳本txt_format.sql

-set部分設置導出的文本格式
set echo off             --關閉腳本中正在執行的SQL語句的顯示
set feedback off         --關閉本次sql命令處理的記錄條數,默認為on即去掉最后的已經選擇的行數
set verify off           --可以關閉和打開提示確認信息
set heading off          --關閉標題的輸出設置為off就去掉了select結果的字段名,只顯示數據
set term off             --不在屏幕上輸出執行結果
set trimspool on         --將每行后面多余的空格去掉【linesize-實際字符數=多余空格】
set trimout on           --去除標准輸出每行后面多余的空格
set linesize 200         --設置每行最多顯示200個字符
set pagesize 0         --設置每頁最多顯示999行記錄
set termout off          --屏幕不顯示查詢數據
--@/home/oracle/leonarding/get_table.sql     --設置導出哪個表里的數據和導出的樣子,這是第二種方法
spool ls_test.txt      --where <file> is file_name[.ext] [CRE[ATE]|REP[LACE]|APP[END]]
select rnc_id||'|'||rnc_label_cn||'|'||rnc_label_en from rnc;
--只有關閉spool導出操作,才會在輸出文件中看到輸出內容,這句話不能寫在spool off后面會報錯
spool off              
exit

注:請注意上面的兩個地方:set部分和spool部分,前者用於設置導出的文本格式,后者再次執行一個sql腳本:get_table.sql進行導出。下面我們再看另一個腳本get_table.sql

select rnc_id||'|'||rnc_label_cn||'|'||rnc_label_en from rnc;

那么我們來看一下結果ls_test.txt

876947945|TJRNC04_260|TJRNC04_260
1128405375|TJRNC03_259|TJRNC03_259
1723122318|TJRNC05_261|TJRNC05_261
4290614068|TJRNC06_262|TJRNC06_262
145277785|TJRNC14_270|TJRNC14_270
96954|TJRNC02_258|TJRNC02_258
96956|TJRNC10_266|TJRNC10_266
96907|TJRNC08_264|TJRNC08_264
96926|TJRNC09_265|TJRNC09_265
96930|TJRNC12_268|TJRNC12_268
96932|TJRNC11_267|TJRNC11_267
96934|TJRNC13_269|TJRNC13_269
96946|TJRNC01_257|TJRNC01_257
96948|TJRNC15_271|TJRNC15_271
96950|TJRNC16_272|TJRNC16_272
96952|TJRNC17_273|TJRNC17_273
96906|TJRNC07_263|TJRNC07_263

以下的文章主要介紹的是如何正確的把Oracle數據導出成Txt 的格式,Oracle數據導出成Txt 在實際應用中的比例還是比較常見的,以下的文章主要是對實際操作方案的描述,以下就是正文的主要內容的描述。
Oracle數據庫提供的SQL功能很好很強大,用得越多越覺得自己淺薄無知。

上周做系統演示時需要手工制造一些文本數據充當數據源,想偷偷懶就用了Toad工具直接查詢后導出成csv格式。今天正好有點時間,整理了一下思路,用sql去實現文本數據的生成。寫了大致框架,有空時再來完善吧。

步驟如下:

新建一個sql腳本 d:\czrk.sql,代碼如下: SET echo off

  1. SET feedback off  
  2. SET newpage none  
  3. SET pagesize 50000  
  4. SET linesize 20000  
  5. SET verify off  
  6. SET pagesize 0  
  7. SET term off  
  8. SET trims ON  
  9. SET heading off  
  10. SET trimspool ON  
  11. SET trimout ON  
  12. SET timing off  
  13. SET verify off  
  14. SET colsep |  
  15. spool d:\czrk.txt  
  16. SELECT sfzh || ',' || xm || ',' || xb || ',' 
    || csrq || ',' || mz|| ',' || xzqh|| ',' || jzdz FROM m_czrk WHERE rownum<=10000;  
  17. spool off   

Oracle數據導出成Txt格式:sqlplus連接上數據庫,執行腳本

  1. sqlplus dc/dc@mydb;  
  2. sqlplus>@d:\czrk.sql  

這樣就在d盤下生成了一萬條數據了。

以上的相關內容就是對把Oracle數據導出成Txt格式的介紹。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM