posts - 262,  comments - 221,  trackbacks - 0
【5】设置输出内容的相关命令
1. 将显示的内容输出到指定文件 
SQL
> SPOOL file_name 
在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。 

2. 关闭spool输出 
SQL
> SPOOL OFF 
只有关闭spool输出,才会在输出文件中看到输出的内容。 
备注:在实用SPOOL输出内容到本地文件时,需注意编码格式,否则会出现乱码的问题

3
.是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息 
SQL
> SET SERVEROUT[PUT] {ON|OFF

4
.是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 
SQL
> SET TERM[OUT] {ON|OFF

用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间。
  设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。 

备注:和Set serveroutput on不同, 这个命令用于设置SQL执行结果是否显示,前者是用于设置存储过程的

5
.将SPOOL输出中每行后面多余的空格去掉 
SQL
> SET TRIMS[OUT] {ON|OFF

6
.将指定的信息或一个空行输出到屏幕上 
PROMPT 
[text] 
备注:该命令在输出提示、警告信息经常使用


下面我们使用Spool技术来导出一个表的数据,我们要求做到:

①导出的过程不在SQL*PLUS屏幕上显示
②导出的文本中不含有执行的SQL命令
③导出的文本中不含有字段名
④导出的文本中使用逗号(英文)作为字段的分隔符
⑤导出的文本中每行长200个字符
⑥导出的文本中每页999行
⑦导出的文本中每行后面的空格必须被截取

那么下面我们来看一下应该如何做到,首先创建一个用于导出的sql脚本文件,我们将其命名为ExpData.sql,脚本内容如下所示:

set echo off                --关闭脚本中正在执行的SQL语句的显示
set feedback off         --关闭当前sql语句查询或修改的行数的显示
set verify off
set term off                 --关闭屏幕上输出内容的显示
set trimspool on        --将每行后面多余的空格去掉
set linesize 200         --设置每行最多显示200个字符
set pagesize 999       --设置每页最多显示999行记录
--
set newpage none  --设置页与页之间的分隔
set heading off          --关闭标题的输出

spool d:\peng\
database\oracle\tables.xls
@d:\peng\database\oracle\get_table.sql
spool 
off  --关闭输出


请注意上面的两个地方:set部分和spool部分,前者用于设置导出的文本格式,后者再次执行一个sql脚本:get_table.sql进行导出。下面我们再看另一个脚本get_table.sql:

select id || ',' || name || ',' || remark || ',' || reg_date || ',' || salary from testtable;


这里我们使用了||','||来为每个导出字段添加分隔符:,最后是在SQL*PLUS环境下执行上述的导出脚本

SQL> @d:\peng\database\oracle\ExpData.sql
SQL
> 

注意在这里我们看不到任何的输出结果,是因为我们使用了set echo off和set term off两个选项的结果。在大数据量导出的情况下关闭屏幕的输出非常有必要,因为这将大大提高程序执行的效率,否则的话会导致SQL*PLUS不停地刷新屏幕和缓冲区。

其实我们也可以把上述的几个选项写在一块,比如说现在我们要将导出文件改为htm文件格式,我们可以这样写
set term off verify off feedback off  pagesize 999  heading on
set markup html on entmap ON spool on preformat off

spool d:\peng\
database\oracle\tables.htm
@d:\peng\database\oracle\get_table.sql
spool 
off

这里我们使用set markup html on来将文件导出成为HTML格式,同时注意导出文件名的后缀要改为.htm。因为采用了HTML表格的形式,所以我们将第二个脚本稍微修改一下
select *  from testtable;

导出的最终结果如下:
SQL> @d:\peng\database\oracle\ExpData.sql
SQL
> 



注意在导出完成后SQL*PLUS的提示符变成了SQL>这是因为我们打开了HTML格式的输出所致(>),如果我们要恢复成默认的提示符格式,只需要再次执行一次:
set markup html off
就可以了。


-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2008-05-26 23:36 Paul Lin 阅读(2048) 评论(0)  编辑  收藏 所属分类: Oracle SQL/PLSQL

只有注册用户登录后才能发表评论。


网站导航:
 
<2008年5月>
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567

常用链接

留言簿(21)

随笔分类

随笔档案

BlogJava热点博客

好友博客

搜索

  •  

最新评论

阅读排行榜

评论排行榜