sqlplus格式化輸出;



SQL> set linesize 100
SQL> col parameter for a40
SQL> col value for a40  

http://blog.itpub.net/26844364/viewspace-723141

 作為一名oracle dba,sqlplus是我們必須熟練掌握的工具。但是,命令行下的sqlplus有時表現的並不是那么友好,本人搜集了部分關於格式化sqlplus結果的文檔,總結整理如下:   

    1)、修改用戶配置文件login.sql,添加如下內容
    
 

 DEFINE _editor=vi  -- windows下應改為define _eidtor=notepad

 SET serveroutput on size 1000000

SET trimspool on

SET long 5000

SET linesize 120

SET PAGESIZE 16

---- Used by Trusted Oracle
COLUMN ROWLABEL FORMAT A15

 

----設置SHOW ERRORS 格式

COLUMN LINE/COL FORMAT A8

COLUMN ERROR FORMAT A65 WORD_WRAPPED

---- 設置 SHOW SGA 格式

COLUMN name_col_plus_show_sga FORMAT a24

 

---- 設置SHOW PARAMETERS 的格式

COLUMN name_col_plus_show_param FORMAT a36 HEADING NAME

COLUMN value_col_plus_show_param FORMAT a30 HEADING VALUE

 

----設置autotrace的格式

COLUMN id_plus_exp FORMAT 990 HEADING i

COLUMN parent_id_plus_exp FORMAT 990 HEADING p

COLUMN plan_plus_exp FORMAT a60

COLUMN object_node_plus_exp FORMAT a8

COLUMN other_tag_plus_exp FORMAT a29

COLUMN other_plus_exp FORMAT a44

 

----設置sqlprompt

COLUMN gname new_value gname

SET termout off

select lower(user)||'@'||global_name gname from global_name;

SET sqlprompt '&gname>'

SET termout on

 

2)、由於表中記錄過長,一條記錄換行顯示,顯得比較錯亂,借鑒tom大師轉列為行的思想,創建如下過程:

 

CREATE OR REPLACE PROCEDURE print_table( p_query in varchar2 )

AUTHID CURRENT_USER

IS

l_theCursor     integer default dbms_sql.open_cursor;
    l_columnValue   varchar2(4000);
    l_status        integer;
    l_descTbl       dbms_sql.desc_tab;
    l_colCnt        number;
    l_rowCnt        number:=1;
BEGIN
    dbms_sql.parse(  l_theCursor,  p_query, dbms_sql.native );
    dbms_sql.describe_columns( l_theCursor, l_colCnt, l_descTbl);

    for i in 1 .. l_colCnt loop
        dbms_sql.define_column(l_theCursor, i, l_columnValue, 4000);
    end loop;

    l_status := dbms_sql.execute(l_theCursor);

while ( dbms_sql.fetch_rows(l_theCursor) > 0 ) loop
        for i in 1 .. l_colCnt loop
           dbms_sql.column_value( l_theCursor, i, l_columnValue );
           dbms_output.put_line( rpad( l_descTbl(i).col_name, 30 )|| ': ' || l_columnValue );
        end loop;

dbms_output.put_line();
        dbms_output.put_line( '[ROW:'||l_rowCnt||']-----------------------------' );
        l_rowCnt := l_rowCnt + 1;
    end loop;
   dbms_sql.close_cursor( l_theCursor );
EXCEPTION
    when others then
        dbms_sql.close_cursor( l_theCursor );
        RAISE;
END print_table;

 

http://www.zhujiangroad.com/program/Oracle/20923.html

以下的文章主要是對Oracle sqlplus格式數據的相關實際應用的介紹,我們大家都知道spool 在實際的應用中是很好運用的,但是其在格式化的相關數據上 ,對與set命令是不大熟悉的,於是網上找了下,在此備注下:

  

  1. SQL>set colsep ;  

  域輸出分隔符

  

  1. SQL>set newp none  

  設置查詢出來的數據分多少頁顯示,如果需要連續的數據,中間不要出現空行就把newp設置為none,這樣輸出的數據行都是連續的,中間沒有空行之類的

  

  1. SQL>set echo off;  

  顯示start啟動的腳本中的每個sql命令,缺省為on

  

  1. SQL> set echo on 

  設置運行命令是是否顯示語句

  1. SQL> set feedback on; 

  設置顯示“已選擇XX行”

  

  1. SQL>set feedback off;   

  回顯本次sql命令處理記錄條數,缺省為on即去掉最后的 "已經選擇10000行"

  

  1. SQL>set heading off;  

  輸出域標題,缺省為on 設置為off就去掉了select結果的字段名,只顯示Oracle sqlplus格式化數據

  

  1. SQL>set pagesize 0;  

  輸出每頁行數,缺省為24,為了避免分頁,可設定為0  。

  

  1. SQL>set linesize 80;  

  輸出一行字符個數,缺省為80

  

  1. SQL>set numwidth 12;  

  輸出number類型域長度,缺省為10

  

  1. SQL>set termout off; 

  顯示腳本中的命令的執行結果,缺省為on

  

  1. SQL>set trimout on;  

  去除標准輸出每行的拖尾空格,缺省為off

  

  1. SQL>set trimspool on; 

  去除重定向(spool)輸出每行的拖尾空格,缺省為off

  

  1. SQL>set serveroutput on; 

  設置允許顯示輸出類似dbms_output

  

  1. SQL> set timing on; 

  設置顯示“已用時間:XXXX”

  

  1. SQL> set autotrace on-; 

  設置允許對執行的sql進行分析

  

  1. set verify off 

  可以關閉和打開提示確認信息old 1和new 1的顯示.

  Oracle 導出數據到文件:

  sqlplus /nolog @d:\sp.sql

  d:\sp.sql內容如下:

  

  1. set head off  
  2. set headsep off  
  3. set newp none  
  4. set linesize 100  
  5. set pagesize 10000  
  6. set sqlblanklines OFF  
  7. set trimspool ON  
  8. set termout off  
  9. set feedback off  
  10. spool d:\export.txt  
  11. select NODECODE||&||NODETYPE||&||NODENAME||& from "000".tbnode;  
  12. spool off  
  13. exit   

  以上的相關內容就是對Oracle sqlplus格式化數據的介紹,望你能有所收獲  。

 

http://www.net527.cn/shujukuguanli/Oracle/2011/0330/17182.html

1:首先 要 使crt有行的緩沖區,並出現橫線滾動條

      a:首 先全局設置:Options - Global Options - Terminal - Appearance - Maximum columns 最大只能設置成1024(推薦256),設置越大越占用內存,並選上show horizontal scroll bar,然后重啟SecureCRT;


b: 然后session設置:Options - Session Options(或者Global Options - General - Default Session - Edit Default Session,這樣就可以設置所有的Session) - Terminal - Emulation - Logical Columns 設置成255(推薦255,主要是因為Sqlplus里Dbms_output.put_line最多顯示255字符限制,這里最大值只能設置成上面 Maximum columns大小,並選上Retain size and font)、Logical rows設置成42(剛好滿屏)、Scrollback buffer設置成5000(這樣縱向滾動屏就可以緩存更多內容,但占內存),另外Terminal - Appearance - Window - 選上Show horizontal scroll bar,然后重新連接。


2: 在crt 中運行sqlplus

  

   未設置前:

運行命令:

set linesize 1000;

col member for a100;

設置后:


這樣 顯示的美觀多了

總結:

col 列名 for(mat) 格式 :可對列進行格式化(a100 是針對varchar 的格式,顯示100個字符,可以a60,a80),

例如:col file_name format a100;

col 列名:顯示當前列的格式

clear column:清除所有列的格式

show linesize :顯示sqlplus的環境變量,可設置在一個login.sql 中,每次運行sqlplus可自動設置了,但需要設置SQLPATH 環境變量指向login.sql。(責任編輯:admin)

 

 

http://www.cnblogs.com/sinoJay/archive/2013/02/21/2921364.html

命令 說明

remark 注釋

set headsep 標題換行

ttitle 設置輸出頁的頭標題

btitle 設置輸出頁的尾標題

column 對sql語句中的列進行格式化處理

break on 通知sqlplus在輸出結果中插入空格

compute sum 通知sqlplus計算小計

set linesize(line) 設置sqlplus輸出的最大行寬

-- set pagesize 設置頁面的最大行數

set newpage 設置頁面之間的空行數

spool sqlplus屏幕的文件輸入輸出命令 

set pause sqlplus屏幕輸出結果時在頁面之間停頓

save 保存當前session最近的sql語句至指定的文件中

host 返回到操作系統環境類似!

start或@  執行文件中的命令

edit 使用自定義的編輯器編輯指定文件

define_editor 自定義sqlplus里的編輯器

exit或quit 退出sqlplus

 

Column column是sqlplus里最實用的一個命令很多時候sql語句輸出的列寬度不合適而影響查看都需要用到這個命令來更改select語句中指定列的寬度和標題。

大部分時候我們可以簡寫column為col即可主要有以下兩種用法

修改列寬度      column c1 format a20         

--將列c1字符型顯示最大寬度調整為20個字符    

column c1 format 9999999 

--將列c1num型顯示最大寬度調整為7個字符修改列標題     

column c1 heading c2       --將c1的列名輸出為c2 

SQL>col file_name for a50;

就是指file_name這個字段會占據50列如果實際的值超過50列就只能換行了,for 其實是format的縮寫a是什么意思一直沒有明白哦

SQL>set linesize 200

是指整個sqlplus顯示區域最多顯示200列,如果不設置默認是顯示80列

SQL>set linesize 100;

設置行高100

http://f.dataguru.cn/thread-132716-1-1.html

1) 格式調整有以下參數

 

set echo on/off        是否顯示腳本中的需要執行的命令 
set feedback on/off    是否顯示 select 結果之后返回多少行的提示
set linesize n         設置一行最多顯示多少字符,之前就是因為 n 設得過大,導致行與行之間有空白行
set termout on/off     在執行腳本時是否在屏幕上輸出結果,如果 spool 到文件可以將其關閉
set heading on/off     是否顯示查詢結果的列名,如果設置為 off,將用空白行代替,如果要去除該空白行,可以用 set pagesize 0
set pagesize n         設置每頁的行數,將 n 設為 0 可以不顯示所有 headings, page breaks, titles, the initial blank line, and other formatting information
set  trimspool on/off  在 spool 到文件時是否去除輸出結果中行末尾的空白字符,之前的隔行可以用該參數去掉,和該參數對應的是 trimout,后者用於屏幕輸出
set trimout on/off      是否去掉屏幕上輸出結果行末尾的空白字符

set space on/off        輸出列間空格數設置



2) 如果需要sqlplus下次啟動的時候自動調整這些格式,可以將上面的設置保存到$ORACLE_HOME/sqlplus/admin/glogin.sql文件



3) 如何將輸出重定向到文件

 

spool /tmp/sqlplus.output.txt

select [....] from [...]

spool off                (只有關閉輸出,才會在輸出文件中看到輸出的內容)

 

4) 列格式

col column_name format a50   (設置column_name為50個字符寬)

col column_name                (顯示列格式)

col column_name noprint    (隱藏列)

CLEAR COLUMNS                (將所有列的顯示屬性設為缺省值)

BREAK                                 (顯示對BREAK的設置 )
CLEAR BREAKS                    (刪除BREAK的設置 )


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM