要寫指令碼,用到了spool,之前沒用過,於是學習了一下,在此做個總結oracle spool是什麼
spool是oracle快速匯出資料的工具,它是sqlplus的乙個控制指令,使用spool和sql語句組合可以動態生成一些指令碼或資料。
spool並不算sql命令,只是一種指令。
spool的作用
spool命令的作用就是用來儲存檔案和設定是否列印執行結果,以及以規範列印執行結果的形式,方便之後程式的匯入。
spool的常用設定
命令用途
set closep 『,』
設定域輸出分隔符
set echo off
設定是否顯示執行的sql命令,預設為on
set heading off
設定是否顯示資料的欄位名,預設為on
set feedback off
設定是否顯示處理記錄的條數,預設為on
set linesize 1000
設定每行允許輸出的最大字元,預設為80,這個應該根據需要設定,太小會造成該行顯示不全,太大了會導致匯出的檔案變大
set pagesize 0
設定每頁允許輸出的最大行數,預設為24,避免分頁可設定為0
set trimspool on
設定是否去除每行末尾的空格,預設為off
set termout on
設定是否顯示指令碼中的命令執行結果,預設為on
set newwidth 20
設定輸出number型別域的長度,預設為10
set timing on
使用spool匯出檔案的方式如下:
set colsep '|'
set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
set num 18
set feedback off
spool 路徑+檔名
select
*from 表名;
spool off
下面是乙個平時用到的示例:
set colsep '|'
set trimspool on
set linesize 32767
set pagesize 0
set heading off
set termout on
set numwidth 20
set feedback on
set timing on
set echo on
--當發生錯誤時回滾
whenever sqlerror exit
rollback
whenever oserror exit
rollback
spool 資料夾名/檔名,格式可以是:序號-表名-
for-用途.檔案字尾
--查詢當前時間
select sysdate from dual;
--備份需要變更的表資料,不要只變更部分資料卻對全表進行備份
create
table 備份的表名,格式可以是:使用者名稱.t當前時間_用途_序號 as
select
*from 原表名 where 查詢條件;
--查詢當前時間
select sysdate from dual;
--查詢結束,關閉檔案
spool off
Oracle用spool匯出資料
使用spool匯出資料有時候也是乙個比較好的選擇,7萬條資料匯出需要10s,注意的是需要用 d spool.txt呼叫,set termout off才會生效不顯示到螢幕。sql語句和spool off後面要加分號。sql drop table test purge sql create table...
oracle中spool的用法小結
在生產中常會遇到需要將數量比較大的錶值匯入到本地文字檔案中.方法有很多種,比較常用的就是spool命令 要輸出符合要求格式的資料檔案只需在select時用字元連線來規範格式。比如有如下表 sql select id,username,password from myuser 測試表 1 john 1...
Oracle使用指令碼匯出資料(spool)
使用spool匯出表內容 out.sql檔案內容 set colsep set trimspool on set linesize 2000 set pagesize 2000 set newpage 1 set heading off set term off set num 18 set fee...