Oracle筆記之spool介紹及常用設定

2021-09-13 09:01:47 字數 1843 閱讀 6784

要寫指令碼,用到了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...