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