Oracle大規模數據快速導出文本文件


哈嘍,前幾久,和大家分享過如何把文本數據快速導入數據庫(點擊即可打開),今天再和大家分享一個小技能,將Oracle數據庫中的數據按照指定分割符、指定字段導出至文本文件。
首先來張圖,看看導出的數據是什么樣子。

 

 

 

用到的就是Oracle的spool命令,可以將數據庫數據導出一個文本文件,而且也可以指定數據分隔符,其中!^是數據之間的分隔符。

首先和大家分享一下,我的這個腳本是怎么寫的,其中寫select時,需要導出那些字段,直接寫在select里面就可以了,此外,我也是在select里面指定了分割符!^。雖然可以用參數來指定分隔符,但用起來並不友好,結束時,我會演示的。

set echo off
set heading off
set feedback off
set termout on
set trimspool off
spool /home/oracle/Desktop/studentinfoSpool.dat --指定導出數據保存的文本文件
select stuid||'!^'||stuname||'!^'||sex||'!^'||age from studentinfo; 
spool off
exit

  

一個不超過10行的SQL腳本,設置四五個參數,一個select語句,就可以搞定導數這個問題,是不是,很簡單。

接下來對幾個常用的參數進行解釋一下。

參數 作用
set echo off 顯示start啟動腳本中的每個sql命令,默認為on。比如select語句
set pagesize 0 設置每頁的行數,默認為24,設置為0時為不用分頁,一般需要分頁
set termout off 在電腦屏幕顯示腳本中的命令執行結果,默認為on。
set feedback off 顯示本次sql命令處理的記錄數,默認為on。
set heading off 輸出域標題,默認為on
set trimspool off 去字段空格
set linesize 50 每行允許的最大字符數,設置大些,如果太小,數據庫會報錯或者數據自動換行,但如果設置過大,文件也會變大
set colsep ‘!^’; 用來設置分割符,但不建議使用是參數,建議   手動寫分割符


執行sql腳本

sqlplus c##orcl/1234 @/home/oracle/Desktop/studentinfoSpool.sql
說明:c##orcl是用戶名,1234是密碼,@后面是我們寫的sql腳本,里面就是剛剛演示的SQL腳本。因為是本地數據庫,所以沒有寫地址和端口等。

spool命令就是這么簡單,但也有幾個需要注意的地方。

注意事項:

1、不建議使用colsep 設置分割符。

可以把手動設置分隔符和使用colsep設置的結果對比一下。

 

 

 

 

可以看到,使用colsep 設置分隔符的數據中間會出現很多空格,而手動設置的分隔符就很好。此外,如果最后一個字段后面也需要分割符,colsep 參數就無能為力。

2、合理設置linesize 

linesize 設置如果不當,會出現很多問題,如果太小,數據庫可能會錯,數據自動換行。太大的話,數據文件也會更大。

 

 

 

 原文鏈接:https://blog.csdn.net/wzgl__wh/article/details/102887557


免責聲明!

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



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