`
tianshibaijia
  • 浏览: 1129769 次
文章分类
社区版块
存档分类
最新评论

sqlplus SPOOL 导出网页文件

 
阅读更多

在用spool导出数据的时候,如果直接导成excel,那么在格式上比较路,比如一个字段占了2列,这个还是好的,有的占了办列,这个格式看上去还是很麻烦的,所以我们可以使用sqlplusmarkup命令,直接导出成网页形式的,这样在格式上要整齐很多。

关于sqlplusspool,可以参考我的2blog

Oraclesqlplus常用命令总结

http://blog.csdn.net/xujinyang/article/details/6823232

Linux平台下Spool导出数据并发送到邮箱

http://blog.csdn.net/xujinyang/article/details/6829701

语法:

SETMARK[UP]HTML[ON|OFF][HEADtext][BODYtext][TABLEtext][ENTMAP{ON|OFF}][SPOOL{ON|OFF}][PRE[FORMAT]{ON|OFF}]

SETMARKUP指明SQL*Plus输出HTML编码格式,必须使用SETMARKUPHTMLONSPOOLONSQL*PlusSPOOL命令去创建一个spool文件,并且以HTML格式输出。

SETMARKUP习惯称作SQLPLUS-MARKUP命令。

使用SQLPLUS-MARKUPHTMLON或者SQLPLUS-MARKUPHTMLONSPOOLON产生标准的web页,SQL*Plus自动生成完整的用<HTML><BODY>标签封装HTML网页。当设定SPOOLOFF或者退出SQL*Plus是,spool文件中的HTML标签就闭合。

SQLPLUS-MARKUP和一些其他有用的静默和限制命令一起用。

使用MARKUPHTMLON生成HTML输出,无论是<PRE>标签还是一个HTML表格。输出一个表格使用标准的HTML<TABLE>,<TR><TD>标签,自动闭合从一个查询返回结果集的行和列。当设置HTMLON时,默认产生标准HTML表格。通过设置PREFORMATON产生预格式化HTML<PRE>标签。

SHOWMARKUP命令查看MARKUP操作当前状态:

SQL>showmarkup

markupHTMLOFFHEAD"<styletype='text/css'>body{font:10ptArial,Helvetica,sans-serif;color:black;background:White;}

HTML[ON|OFF]

指定是否生成HTML格式,ON生成,OFF不生成,默认是OFF

HEADtext

指定HTMLHEAD标签中的内容,默认情况下,文本包括级联样式和标题。

BODYtext

指定HTMLBODY标签属性

TABLEtext

设置<TABLE>标签的属性,如BORDER,CELLPADDING,CELLSPACINGWIDTH.。默认情况下,<TABLE>WIDTH属性设置为90%BORDER属性设置为1

ENTMAP{ON|OFF}

指定在SQL*Plus中是否用HTML字符实体如<,>,"and&等替换特殊字符<,>,"and&。默认设置是ON。例如:

SQL>setmarkuphtmlonentmapoff

SQL>

<br>

SQL>setmarkuphtmlonentmapon

<br>

SQL>

<br>

SQL>

SPOOL{ON|OFF}

指定是否在SQL*Plus生成HTML标签<HTML><BODY>,</BODY></HTML>。默认是OFF

注:

这是一个后台打印操作,只有在生成SPOOL文件生效,在屏幕上并不生效。

PRE[FORMAT]{ON|OFF}

指定SQL*Plus生成HTML时输出<PRE>标签还是HTML表格,默认是OFF,因此默认输出是写HTML表格。

在生成HTML格式时要设置一些其他操作,列出如下:

SETECHO{ON|OFF}

是否显示脚本中正在执行的SQL语句。

SETFEED[BACK]{6|n|ON|OFF}

.是否显示当前sql语句查询或修改的行数。默认只有结果大于6行时才显示结果的行数。如果setfeedback1,则不管查询到多少行都返回。当为off时,一律不显示查询的行数。

SETHEA[DING]{ON|OFF}

是否显示列标题。当SETHEADINGOFF时,在每页的上面不显示列标题,而是以空白行代替。

SETLIN[ESIZE]{80|n}

设置一行可以容纳的字符数。如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。

SETNEWP[AGE]{1|n|NONE}

设置页与页之间的分隔。

SETNEWPAGE0时,会在每页的开头有一个小的黑方框。

SETNEWPAGEn时,会在页和页之间隔着n个空行。

SETNEWPAGENONE时,会在页和页之间没有任何间隔。

SETNULLtext

显示时,用text值代替NULL

SETPAGES[IZE]{24|n}

设置一页有多少行数,如果设为0,则所有的输出内容为一页并且不显示列标题

SETWRA[P]{ON|OFF}

SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句,设置SETWRAPON时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。

SETTERM[OUT]{ON|OFF}

是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。设置SETTERMOUTOFF,输出的内容只保存在输出文件中,不会显示在屏幕上,提高了SPOOL输出速度。

SETTRIMS[OUT]{ON|OFF}

SPOOL输出中每行后面多余的空格去掉

示例:

#####################################################################

##get000001Info.sh##

##createbyTianlesoftware##

#####################################################################

#!/bin/ksh

EDITOR=vi;exportEDITOR

PATH=$PATH:$ORACLE_HOME:$ORACLE_HOME/bin:/usr/ccs/bin:/bin:/usr/bin:/usr/sbin:/sbin:/usr/openwin/bin:/opt/bin:.;

exportPATH

cd/u03/scripts

sqlplus-suser/pwd@sid<<EOF

setnumwidth20

setheadingoff

Setpagesize0

Settermoff

Setfeedbackoff

setlinesize99999

settrimspooloff

settermoffverifyofffeedbackoffpagesize9999

setmarkuphtmlonentmapONspoolonpreformatoff

spool000001info.xls

select'信息编号','收派员','点部','操作员','时间','催派运单号','类型','信息内容'fromdual

unionall

SELECTt.infoid,t.empid,r.deptid,t.operator,to_char(t.sendtime,'yyyy-mm-ddhh24:mi:ss'),to_char

(t.billno),t.infotype,t.msgFROMotherinfot,employeerWHEREt.empid=r.empidANDt.sendtime>=

trunc((TRUNC((SYSDATE-1),'dd')+15/48),'mi'

)

andt.sendtime<TRUNC((SYSDATE),'dd')ANDt.operator=000001;

spooloff

exit

EOF


#sendMail

uuencode000001info.xls000001info.xls|mailx-s"000001每日内部通讯,如有疑问请联系IT" 29002908@qq.com


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics