oracle spool命令

spool是sqlplus的内置命令,作用是将数据库中的字段导出为文本,一般都是通过shell脚本来实现。

举例:test.sh

#! /bin/sh

sqlplus -s scott/tiger<<EOF
	set head off
	set linesize 20000
	set echo off
	set feedback off
	set pagesize 0
	set termout off
	set trimout on
	set trimspool on
		spool /home/test.txt
			select empno || '|' || ename || '|' || job || '|' || 
			mgr || '|' || hiredate || '|' || sal || '|' || 
			comm || '|' || deptno from emp;
		spool off
		exit;
EOF


spool常用的设置:
set head off:输出域标题,缺省为on
set linesize 20000:linesize可以设置的大点,防止一行长度不够
set echo off:显示sqlplus中的每个sql命令本身,缺省为on
set feedback off:回显本次sql命令处理的记录条数,缺省为on
set pagesize 0:输出每页行数,缺省为24,为了避免分页,可设定为0
set termout off:显示脚本中的命令的执行结果,缺省为on
set trimout on:去除标准输出每行的拖尾空格,缺省为off
set trimspool on:去除重定向(spool)输出每行的拖尾空格,缺省为off

参考资料:
http://wallimn.iteye.com/blog/472182
http://wenku.baidu.com/link?url=UaJq13FHgH87D5wITX0zcS4XxB6GkPec8mkNIuDP5hWiPvmhk2L-5sEOgECU2xRAfosPnwh3bgPpPmHNTICtE1qxsTuxPaI4ktuu9EVQNcG