[20211108]sqlplus管道過濾.txt
[20211108]sqlplus管道過濾.txt
--//我的同事基本不使用sqlplus,我自己開始學習oracle時,也是很不習慣使用,有時候某列超長,很給使用column修改。
--//還給設定pagesize,linesize大小,當然這些還給面對螢幕顯示混亂的情況,使用上可以使用管道以及過濾來達到好的顯示效果。
--//BTW,我現在是很少用這種方式,一般超長顯示我會使用prxx.sql指令碼(從tanel poder的pr.sql)修改而來。
--//我一般在linux下使用我會啟動tmux下使用,tmux下可以prefix-key ,[ ,? 來查詢特定字串,這樣便於我查詢需要的資訊。
--//透過簡單的例子介紹sqlplus下使用管道以及過濾。
1.環境:
SCOTT@book> @ver1
PORT_STRING VERSION BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
--//建立管道檔案。
$ mkfifo /tmp/oop.pipe
$ ls -l /tmp/oop.pipe
prw-r--r-- 1 oracle oinstall 0 2021-11-08 15:33:27 /tmp/oop.pipe
2.測試1:
--//開啟兩個shell視窗:
--//window 1:
$ echo "select sysdate from dual ;" > /tmp/oop.pipe
--//注意加引號。
--//window 2,啟動sqlplus:
SCOTT@book> @ /tmp/oop.pipe
SYSDATE
-------------------
2021-11-08 15:35:31
--//window 1:
$ echo "@dpc '' ''"> /tmp/oop.pipe
--//window 2:
SCOTT@book> @ /tmp/oop.pipe
--//顯示執行計劃,輸出略。
--//window 1:
$ seq 10 10 40 | xargs -IQ echo "select * from dept where deptno=Q;" > /tmp/oop.pipe
--//window 2:
SCOTT@book> set echo on
SCOTT@book> @ /tmp/oop.pipe
SCOTT@book> select * from dept where deptno=10;
DEPTNO DNAME LOC
---------- -------------- -------------
10 ACCOUNTING NEW YORK
SCOTT@book> select * from dept where deptno=20;
DEPTNO DNAME LOC
---------- -------------- -------------
20 RESEARCH DALLAS
SCOTT@book> select * from dept where deptno=30;
DEPTNO DNAME LOC
---------- -------------- -------------
30 SALES CHICAGO
SCOTT@book> select * from dept where deptno=40;
DEPTNO DNAME LOC
---------- -------------- -------------
40 OPERATIONS BOSTON
--//設定echo on,可以顯示執行的命令。
3.測試2:
--//實際上這個我以前都講過:
--//http://blog.itpub.net/267265/viewspace-2285749/=>[20181219]script使用小技巧.txt
--//http://blog.itpub.net/267265/viewspace-2375095/=>[20190108]rlwrap sqlplus tee相關問題.txt
--//http://blog.itpub.net/267265/viewspace-2375436/=>[20190110]rlwrap sqlplus tee相關問題3.txt
SCOTT@book> set describe DEPTH 2 LINENUM ON INDENT ON
SCOTT@book> set colsep |
--//目的就是desc前面輸出有行號,可以標識那個欄位顯示位置。
--//建立一個指令碼:
$ cat prp.sql
spool /tmp/oop.pipe
@ prxx
spool off
--//window 1:
$ tail -n 2000 -f /tmp/oop.pipe
--//注意先執行以上這步,不然下面spool /tmp/oop.pipe 時掛住。
--//window 2:
SCOTT@book> select * from v$database;
SCOTT@book> @ prp
--//window 1:
--//按ctrl+c中斷,然後打入如下,然後在windows 2執行 @ prp就ok了。
$ tail -n 2000 -f /tmp/oop.pipe | grep -n SUPP
33:SUPPLEMENTAL_LOG_DATA_MIN : NO
34:SUPPLEMENTAL_LOG_DATA_PK : NO
35:SUPPLEMENTAL_LOG_DATA_UI : NO
43:SUPPLEMENTAL_LOG_DATA_FK : NO
44:SUPPLEMENTAL_LOG_DATA_ALL : NO
54:SUPPLEMENTAL_LOG_DATA_PL : NO
--//減去3對應欄位序號。
--//window 2:
SCOTT@book> set colsep |
SCOTT@book> set linesize 20000
SCOTT@book> @ desc v$database
...
11 CONTROLFILE_TYPE VARCHAR2(7)
12 CONTROLFILE_CREATED DATE
13 CONTROLFILE_SEQUENCE# NUMBER
14 CONTROLFILE_CHANGE# NUMBER
15 CONTROLFILE_TIME DATE
....
--//window 1:
--//修改如下:
$ tail -n 2000 -f /tmp/oop.pipe | cut -d"|" -f11,12,13,14,15
SCOTT@book> select * from v$database;
CONTROL|CONTROLFILE_CREATED|CONTROLFILE_SEQUENCE#|CONTROLFILE_CHANGE#|CONTROLFILE_TIME
-------|-------------------|---------------------|-------------------|-------------------
CURRENT|2015-11-24 09:11:10| 54493| 13382769951|2021-11-08 16:22:44
--//window 2:
spool /tmp/oop.pipe
select * from v$database;
spool off
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2841205/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20191104]sqlplus 管道檔案 過濾.txtSQL
- [20211108]sqlplus 本地登入緩慢.txtSQL
- [20211108]sqlplus資料寬度顯示設定.txtSQL
- [20230323]sqlplus #.txtSQL
- [20210802]grep奇怪的過濾.txt
- [20190215]sqlplus set arraysize.txtSQL
- [20190524]sqlplus 與輸出&.txtSQL
- [20190530]sqlplus preliminary connection.txtSQL
- [20211125]sqlplus生成html格式.txtSQLHTML
- [20200402]strace過濾使用awk問題.txt
- [20180417]奇怪的grep過濾問題.txt
- [20181031]lob欄位與布隆過濾.txt
- [20211123]sqlplus @與@@的區別.txtSQL
- [20221203]sqlplus set trimspool 問題.txtSQL
- [20230417]sqlplus warpped word_warp.txtSQL
- [20221202]sqlplus set trimout 問題.txtSQL
- [20210420]19c奇怪的過濾條件.txt
- [20180510]sqlplus array 和 opifch2.txtSQL
- [20190720]sqlplus 與輸出& 2.txtSQL
- [20211220]sqlplus簡單計算器.txtSQL
- [20210119]sqlplus 12c LOBPREFETCH.txtSQL
- [20211108]索引分裂塊清除日誌增加(唯一索引)2.txt索引
- [20190329]grep與管道檔案.txt
- [20190108]rlwrap sqlplus tee相關問題.txtSQL
- [20181122]18c sqlplus set linesize.txtSQL
- [20181207]sqlplus下顯示資料精度.txtSQL
- [20181014]12cR2 sqlplus新特性.txtSQL
- [20180813]sqlplus arraysize設定與SDU.txtSQL
- [20241112]無法理解sqlplus的輸出.txtSQL
- [20241013]sqlplus spool與檔案覆蓋.txtSQL
- [20231103]sqlplus column new_value old_value.txtSQL
- [20211220]記錄使用sqlplus的小問題.txtSQL
- [20210722]sqlplus下show recycebin的小問題.txtSQL
- [20230303]sqlplus column new_value old_value.txtSQL
- 過濾
- [20180627]測試bbed是否支援管道命令.txt
- [20181109]12c sqlplus rowprefetch引數5.txtSQL
- [20181108]12c sqlplus rowprefetch引數4.txtSQL