ITPub博客

首页 > Linux操作系统 > Linux操作系统 > SPOOL 命令使用实例【oracle导出纯文本格式文件】

SPOOL 命令使用实例【oracle导出纯文本格式文件】

原创 Linux操作系统 作者:leonarding 时间:2012-03-15 12:36:11 0 删除 编辑
首先介绍一下spool的参数含义

SET echo off              --在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句;

 

SET feedback off          --是否回显本次sql命令处理的记录条数,缺省为on


SET heading  off          --
是否显示列标题,缺省为on

 

SET pagesize 50000        --设置每页有多少行数,缺省为14。当值设为0时,输出内容为一页且不显示列标题,为了避免分页,我们通常可设定为0

SET termout off           --
是否在屏幕上显示输出的内容,或脚本中的命令的执行结果,缺省为on

 

SET trimout on;        --去除标准输出每行后面多余的空格,缺省为off

 

SET timing off            --显示每个sql语句花费的执行时间;

 

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

SET  NULL text            --
显示时,text值代替NULL值;


SET serveroutput off   --
是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息;--编写存储过程时,大多会将必要的信息输出;


SET newpage none    --
设置页与页之间的分隔{1|n|NONE};当值为0时在每页开头有一个小的黑方框;当值为n时在页和页之间隔着n个空行;当为none 时,会在页和页之间没有任何间隔;

SET linesize 1000       --
设置一行可以容纳的字符数{80|n};输出内容大于设置的行可容纳的字符数,则折行显示.据实际字符设置,过大导出速度慢;

SET wrap on              --
输出行长度大于设置行长度时(set linesize n命令设置);值为on,多余的字符另起一行显示,否则多余的字符将被切除,不予显示;

  

SET verify off            --是否显示替代变量被替代前后的语句;

 

SET  colsep' ';     --域输出分隔符;


------------------------------------------------------------------------------------------------------

导出文本数据的建议格式:
SQL*PLUS
环境设置--

SET echo off               --在用start命令执行一个sql脚本时,不显示脚本中正在执行的SQL语句

SET heading  off         --不显示字段的名称                 

SET pagesize 0          --设置输出每页行数,为了避免分页,可设定为0。设置为0时,输出内容为一页且不显示列标题具有SET heading  off  包含的功能。

SET newpage none    --页与页之间没有分隔                                        
SET trimout on
     --去除标准输出每行后面多余的空格
SET trimspool on        --
去除重定向(spool)输出每行的拖尾空格
SET linesize 1000       --
设置一行可以容纳的字符数

SET feedback off         --是否回显本次sql命令处理的记录条数,缺省为on

 

工作运用时导出文本数据的常用格式:

SET echo off  

SET pagesize 0 

SET feedback off 

SET trimout on 

SET trimspool on  

SET linesize 1000 

spool 路径+文件名

需要执行的SQL代码

spool off

 

注:linesize 要稍微设置大些,免得数据被截断,它应和相应的 trimspool 结合使用防止导出的文本有太多的尾部空格。但是如果 linesize 设置太大,会大大降低导出的速度,另外在WINDOWS下导出最好不要用PLSQL导出,速度比较慢,直接用COMMEND下的 SQLPLUS 命令最小化窗口执行。

 

实例

 

要求

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

编写脚本txt_format.sql

--set部分设置导出的文本格式
set echo off             --关闭脚本中正在执行的SQL语句的显示
set feedback off         --关闭本次sql命令处理的记录条数,默认为on即去掉最后的已经选择的行数
set verify off           --可以关闭和打开提示确认信息
set heading off          --关闭标题的输出设置为off就去掉了select结果的字段名,只显示数据
set term off             --不在屏幕上输出执行结果
set trimspool on         --将每行后面多余的空格去掉【linesize-实际字符数=多余空格】
set trimout on           --去除标准输出每行后面多余的空格
set linesize 200         --设置每行最多显示200个字符
set pagesize 0         --设置每页最多显示999行记录
set termout off          --屏幕不显示查询数据
--@/home/oracle/leonarding/get_table.sql     --设置导出哪个表里的数据和导出的样子,这是第二种方法
spool ls_test.txt      --where is file_name[.ext] [CRE[ATE]|REP[LACE]|APP[END]]
select rnc_id||'|'||rnc_label_cn||'|'||rnc_label_en from rnc;
--只有关闭spool导出操作,才会在输出文件中看到输出内容,这句话不能写在spool off后面会报错
spool off              
exit

 

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

select rnc_id||'|'||rnc_label_cn||'|'||rnc_label_en from rnc;

那么我们来看一下结果ls_test.txt

876947945|TJRNC04_260|TJRNC04_260
1128405375|TJRNC03_259|TJRNC03_259
1723122318|TJRNC05_261|TJRNC05_261
4290614068|TJRNC06_262|TJRNC06_262
145277785|TJRNC14_270|TJRNC14_270
96954|TJRNC02_258|TJRNC02_258
96956|TJRNC10_266|TJRNC10_266
96907|TJRNC08_264|TJRNC08_264
96926|TJRNC09_265|TJRNC09_265
96930|TJRNC12_268|TJRNC12_268
96932|TJRNC11_267|TJRNC11_267
96934|TJRNC13_269|TJRNC13_269
96946|TJRNC01_257|TJRNC01_257
96948|TJRNC15_271|TJRNC15_271
96950|TJRNC16_272|TJRNC16_272
96952|TJRNC17_273|TJRNC17_273
96906|TJRNC07_263|TJRNC07_263

 

leonarding

2012.03.15

tianjin

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26686207/viewspace-718632/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
刘盛,网名leonarding,the first ACEA in china, Oracle OCM10g&11g RHCE, ACOUG Core Member Blogger, DATAGURU Oracle数据库版主, ITPUB HADOOP版版主, DB2中国专家组成员, 专注于&Oracle&Hadoop&Nosql&SAS, 提倡“分享技术~成就梦想”, 新浪微博:@itpub_leonarding QQ:40354446

注册时间:2012-02-10

  • 博文量
    240
  • 访问量
    3252362