學習筆記 spool小技巧

2021-10-07 08:25:17 字數 2051 閱讀 7589

在寫指令碼執行oracle sql時,會用到spool工具,但是遇到乙個問題就是,執行的sql會輸出到屏顯,但是我只需要輸出到指定的檔案,不需要屏顯

1.修改前

案例:編寫tmp.sh指令碼,檢視oracle例項狀態和日誌模式,將執行過程輸出到/tmp/status.txt

[root@linux-vm tmp]# cat tmp.sh

#!/bin/sh

oracle_home=

11.2

.0/dbhome_1

su - oracle -c "$/bin/sqlplus '/as sysdba'"

select status from v\$instance;

select name,log_mode from v\$database;

spool off

exit

eof1

執行指令碼:

[root@linux-vm tmp]# .

/tmp.sh

sql*plus: release 11.2

.0.1

.0 production on fri jun 1916:

59:512020

1982

,2009

connected to:

oracle database 11g enterprise edition release 11.2

.0.1.0-

64bit production

sql> sql>

status

----

----

----

open

sql>

name log_mode

----

-------

----

----

--orcl archivelog

sql> sql> disconnected from oracle database 11g enterprise edition release 11.2

.0.1.0-

64bit production

[root@linux-vm tmp]#

屏顯會有這麼一坨。。。其實只需要加個重定向就可以了

2.修改後

指令碼:

#!

/bin/sh

oracle_home=

11.2

.0/dbhome_1

su - oracle -c "$/bin/sqlplus '/as sysdba'"

<

/dev/null 2

>&1

spool /tmp/status.txt

select status from v\$instance;

select name,log_mode from v\$database;

spool off

exit

eof1

執行結果:

[root@linux-vm no_time_bak_0617]# .

/tmp.sh

沒有任何屏顯,檢視執行過程:

[root@linux-vm tmp]# cat /tmp/status.txt

sql> select status from v$instance;

status

----

----

----

open

sql> select name,log_mode from v$database;

name log_mode

----

-------

----

----

--orcl archivelog

sql> spool off

[root@linux-vm tmp]#

spool的小技巧以及別的sql取整

在sqlplus裡 1.不顯示 行頭 set heading off pages 0 2.不顯示行數資訊 set feedback off 3。不在螢幕上顯示結果 set termout off 還要 關鍵。把sql存在檔案 aa.sql 裡 用 aa.sql 的方式執行。不顯示查詢結果的唯一方法 ...

Sql plus技巧之SPOOL應用

1 使用sql plus動態生成批量指令碼 建立gen drop table.sql檔案,包含如下語句 set echo off 不顯示start啟動的指令碼中的每個sql set feedback off 不回顯處理記錄條數 set newpage none set linesize 2000 一...

eclipse小技巧筆記

update sql應用 翻譯 更新 date 日期 data 檔案 updata 不存在無意義 ctrl d 刪除當前行 shift tab 取消縮排 ctrl pgup down 切換小視窗 shift up down 選中一行 shift pgup down 選中自此上 下 ctrl left...