在用spool导出数据的时候,如果直接导成excel,那么在格式上比较路,比如一个字段占了2列,这个还是好的,有的占了办列,这个格式看上去还是很麻烦的,所以我们可以使用sqlplus的markup命令,直接导出成网页形式的,这样在格式上要整齐很多。
关于sqlplus和spool,可以参考我的2篇blog:
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编码格式,必须使用SETMARKUPHTMLONSPOOLON和SQL*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
指定HTML中HEAD标签中的内容,默认情况下,文本包括级联样式和标题。
BODYtext
指定HTML中BODY标签属性
TABLEtext
设置<TABLE>标签的属性,如BORDER,CELLPADDING,CELLSPACING和WIDTH.。默认情况下,<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
分享到:
相关推荐
NULL 博文链接:https://ginaduxuefang.iteye.com/blog/1092945
时不时地我们需要导出一些数据用作备份、查看报表等,如果用Sql Developer导出会非常慢。而用SqlPlus,则速度非常快。 准备SQL执行文件export.sql: set colsep , set feedback off set heading off set newp none ...
oracle sqlplus 中spool 的使用:要自己写程序进行Oracle导出SQL脚本,执行一段SQL,让SQL查询结果就是我们想要的SQL脚本.
oracle新建数据库,及创建用户,表空间,sqlplus导入导出数据库.docx
oracle 使用sqlplus导入大sql文件,需熟悉linux命令,批量导入sql文件以及导入乱码解决方案
NULL 博文链接:https://jxdwuao.iteye.com/blog/1704642
俺也不是啥老鸟,因为最近老是在批量修改Procedure,...在GOGO上搜了一下sqlplus中批量执行sql文件的方法,结果.......(不知道是不是我不会查)。 我最讨厌做这做那的,这个方法自认为简单高效,欢迎拍砖!!!
SQLPLUS命令使用大全SQLPLUS命令使用大全SQLPLUS命令使用大全SQLPLUS命令使用大全
通过sqlplus客户端spool导出数据
用于在dos命令里面,导出oracle数据库用户和表
SqlPlusSpoolPaging , using sqlplus output paging .csv data files
plsql导出数据到excel常用的三种方法,(1)直接导出;(2)转换导出方式;(3)导出后转换格式;
Oracle导出成csv格式后显示乱码的解决方法,自己总结的
oracle导出excel(非csv)的方法有两种,1、使用sqlplus spool,2、使用包体,接下来通过本文给大家介绍Oracle导出excel数据,需要的朋友参考下
Oracle SQLPLUS基础及sqlplus命令详解,详细阐述了oracle sqlplus基本命令和相关用法
在$ORACLE_HOME/sqlplus/admin/help 包含了四个文件:helpbld.sql helpdrop.sql helpus.sql hlpbld.sql helpbld.sql实际是调用第四个脚本hlpbld.sql来进行安装的 helpdrop.sql是删除help表和HELP_TEMP_VIEW视图的...
oracle11g数据库三种方式导入导出必备的exe文件:exp.exe imp.exe sqlplus.exe,有了这三个文件,就可以轻松的进行oracle数据库的导入导出。