Oracle SQL*PLUS命令应用(五)

Oracle SQL*PLUS命令应用(五)
【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
& gt; 



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

-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。

你可能感兴趣的:(Oracle SQL*PLUS命令应用(五))