您的位置:首页 > 其它

详细解析SPOOL用法及使用-技术交流

2012-12-16 15:05 483 查看
详细解析SPOOL用法及使用-技术交流

SPOOL是SQLPLUS的命令

set wrap on; //当输出的行的长度大于设置的行的长度时(用set linesizen命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

set colsep ' ';   //域输出分隔符

set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on

set feedback off;  //回显本次sql命令处理的记录条数,缺省为on

set heading off;   //输出域标题,缺省为on

set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。

set termout off;   //显示脚本中的命令的执行结果,缺省为on

set trimout on;   //去除标准输出每行的拖尾空格,缺省为off

set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off

SQL*PLUS环境设置SET NEWPAGE NONE //页和页之间没有任何间隔

SET HEADING OFF //不显示每行的列名

SET SPACE 0 //设置各列间的空格数

SET PAGESIZE 0 //不分页显示

SET TRIMOUT ON

SET TRIMSPOOL ON

SET LINESIZE 2500 //当输出的行的长度大于设置的行的长度

注:LINESIZE要稍微设置大些,免得数据被截断,它应和相应的TRIMSPOOL结合使用防止导出的文本有太多的尾部空格。

举例说明

1、编写test.sh

#!/bin/sh

user_name=test

password=123

service_name=test

sqlplus -s $user_name/$password@$service_name //-s 参数屏蔽打印到屏幕上的其他信息

set colsep ' '

set echo off

set trimout on

set trimspool on

set linesize 1000

set pagesize 0

set heading off

set termout off

set feedback off

spool 路径+生成文件名

select id ||' '||name ||' '|from t_user; //执行的SQL,以tab键分隔

spool off

EOF

然后在后台主机上调用这个shell就可以了!!

2、需要说明的是由于这种方法调用set termout off是不起作用的,所以没执行完一条语句就会在屏幕上滚动显示。

所以需要将以下部分代码编写成一个SQL文件,如:test.sql

set colsep ' '

set echo off

set trimout on

set trimspool on

set linesize 1000

set pagesize 0

set heading off

set termout off

set feedback off

spool 路径+生成文件名

select id ||' '||name ||' '|from t_user; //执行的SQL,以tab键分隔

spool off

EOF

然后在后台通过

sqlplus -s $user_name/$password@$service_name @test.sql 这种方法去调用就会屏蔽掉屏幕滚动显示了!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: