[20221203]sqlplus set trimspool 問題.txt
[20221203]sqlplus set trimspool 問題.txt
--//自己對這個不是很瞭解,做一個測試,上網查詢到的設定是:
--//set trimspool on; -- 去除spool輸出結果中每行的結尾空格(預設為off)
--//透過測試說明問題:
1.環境:
SCOTT@test01p> @ ver1
PORT_STRING VERSION BANNER CON_ID
------------------------------ -------------- -------------------------------------------------------------------------------- ----------
IBMPC/WIN_NT64-9.1.0 12.2.0.1.0 Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production 0
--//我登入設定如下:
SCOTT@test01p> show trimspool
trimspool ON
SCOTT@test01p> show trimout
trimout ON
2.建立測試例子:
$ cat -Ev aa.txt
select $
sysdate from dual ;$
--//注意結尾的空格.
SCOTT@test01p> @ aa.txt
SYSDATE
-------------------
2022-12-02 20:58:50
--//手工執行5次以上,不要退出.
3.分析:
--//看上面的提示僅僅對spool的輸出有效.
$ sqlplus -s -l scott/btbtms@test01p <<< "column sql_fulltext format a40 ^Jset trimspool on^Jspool x1.txt^Jselect sql_fulltext from v\$sqlarea where sql_id='bz7x703gcr9t2';^Jspool off;"
SQL_FULLTEXT
----------------------------------------
select
sysdate from dual
--//^J 在linux下透過ctrl+v ctrl+j輸入.我雖然使用windows但是在cygwin下使用.
$ cat -Ev x1.txt
^M$
SQL_FULLTEXT^M$
----------------------------------------^M$
select^M$
sysdate from dual^M$
^M$
^M$
--//set trimspool on; -- 去除spool輸出結果中每行的結尾空格(預設為off)
--//實際上其作用與set trimout on類似,只不過針對spool,注意看cat的輸出.selecct後面的空格沒有,分號之前的空格也沒有.
--//windows下sqlplus文字處理結尾\r\n.多了一個字元^M.
$ sqlplus -s -l scott/btbtms@test01p <<< "set linesize 50;^Jcolumn sql_fulltext format a40 ^Jset trimspool off^Jspool x1.txt^Jselect sql_fulltext from v\$sqlarea where sql_id='bz7x703gcr9t2';^Jspool off;"
SQL_FULLTEXT
----------------------------------------
select
sysdate from dual
Administrator@zws ~
$ cat -Ev x1.txt
^M$
SQL_FULLTEXT ^M$
---------------------------------------- ^M$
select ^M$
sysdate from dual ^M$
^M$
^M$
--//結尾$位於52列的位置,因為^M佔用51列的位置.
SCOTT@test01p> select dump(to_char(sql_fulltext),16) c50 , sql_fulltext c40 ,length(sql_fulltext) n10 from v$sqlarea where sql_id='bz7x703gcr9t2';
C50 C40 N10
-------------------------------------------------- ---------------------------------------- ---------------------
Typ=1 Len=31: 20,20,20,20,20,20,73,65,6c,65,63,74, select 31
a,73,79,73,64,61,74,65,20,66,72,6f,6d,20,64,75,61, sysdate from dual
6c,20
--//你可以發現sqlplus在執行語句時,sqlplus做了"處理"刪除了每行結尾空格.而最後一行分號前的空格保留,也就是僅僅去除分號.
--//實際上trimout與trimspool類似,一個針對輸出,另外一個針對spool輸出.
--//建議兩者格式設定都是on.
4.順便測試tab:
SCOTT@test01p> show tab
tab OFF
$ cat -Ev aa.txt
select $
sysdate from dual ;$
--//我修改aa.txt文字,select前9個空格.
SCOTT@test01p> @ aa.txt
SYSDATE
-------------------
2022-12-02 21:13:47
SCOTT@test01p> @ tpt/hash
HASH_VALUE SQL_ID CHILD_NUMBER KGL_BUCKET PLAN_HASH_VALUE HASH_HEX SQL_EXEC_START SQL_EXEC_ID
---------- ------------- ------------ ---------- --------------- ---------- ------------------- -----------
3306312071 9fd1vgv2j4nc7 0 20871 1388734953 c5125187 2022-12-02 21:13:47 16777220
$ sqlplus -s -l scott/btbtms@test01p <<< "set linesize 50;^Jcolumn sql_fulltext format a40 ^Jset tab on^Jselect sql_fulltext from v\$sqlarea where sql_id='9fd1vgv2j4nc7';" | cat -Ev -t
^M$
SQL_FULLTEXT^M$
----------------------------------------^M$
^I select^M$
sysdate from dual^M$
^M$
^M$
--//注意select前的^I輸出,表示tab,這樣在一些文字編輯工具上由於tabstop設定不同,出現不對齊的情況.
$ sqlplus -s -l scott/btbtms@test01p <<< "set linesize 50;^Jcolumn sql_fulltext format a40 ^Jset tab off^Jselect sql_fulltext from v\$sqlarea where sql_id='9fd1vgv2j4nc7';" | cat -Ev -t
^M$
SQL_FULLTEXT^M$
----------------------------------------^M$
select^M$
sysdate from dual^M$
^M$
^M$
4.總結:
--//從以上測試,可以看出設定如下比較合理:
set trimspool ON
set trimout ON
set tab off
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2927019/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20221202]sqlplus set trimout 問題.txtSQL
- [20190215]sqlplus set arraysize.txtSQL
- [20181122]18c sqlplus set linesize.txtSQL
- [20190108]rlwrap sqlplus tee相關問題.txtSQL
- [20211220]記錄使用sqlplus的小問題.txtSQL
- [20210722]sqlplus下show recycebin的小問題.txtSQL
- [20191204]sqlplus特殊定義導致的問題.txtSQL
- [20190110]rlwrap sqlplus tee相關問題3.txtSQL
- [20211221]記錄使用sqlplus的小問題補充.txtSQL
- [20230323]sqlplus #.txtSQL
- [20211231]set linesize and dbms_output.line輸出問題.txt
- [20240818]測試21c下sqlplus show recyclebin的小問題2.txtSQL
- [20211125]sqlplus生成html格式.txtSQLHTML
- [20211108]sqlplus管道過濾.txtSQL
- [20190524]sqlplus 與輸出&.txtSQL
- [20190530]sqlplus preliminary connection.txtSQL
- [20230417]sqlplus warpped word_warp.txtSQL
- [20211123]sqlplus @與@@的區別.txtSQL
- [20211108]sqlplus 本地登入緩慢.txtSQL
- [20191104]sqlplus 管道檔案 過濾.txtSQL
- [20190720]sqlplus 與輸出& 2.txtSQL
- [20211220]sqlplus簡單計算器.txtSQL
- [20210119]sqlplus 12c LOBPREFETCH.txtSQL
- [20180510]sqlplus array 和 opifch2.txtSQL
- [20241112]無法理解sqlplus的輸出.txtSQL
- [20241013]sqlplus spool與檔案覆蓋.txtSQL
- [20181207]sqlplus下顯示資料精度.txtSQL
- [20181014]12cR2 sqlplus新特性.txtSQL
- [20180813]sqlplus arraysize設定與SDU.txtSQL
- [20201103]set newname for datafile.txt
- [20180924]vim set wildmenu.txt
- [20210812]windows xcopy問題.txtWindows
- [20190221]sql patch 問題.txtSQL
- [20181217]strace使用問題.txt
- [20181204]bbed修改問題.txt
- [20190313]備份問題.txt
- [20180619]bbed verify問題.txt
- [20231103]sqlplus column new_value old_value.txtSQL