Orcale中的spool命令使用

在对orcale数据库文件进行导出时,我们希望批量处理已经写好的sql代码,但是在终端正常情况下无法进行循环运行代码。sqlplus我们可以对多行代码批量处理,步骤如下:
(1)首先你连接.sh文件:sh 文件夹路径名/.sh文件 待连接的数据库
(2)终端出现SQL>时,说明数据库连接成功了,此时输入的语句为@…/test.sql;。这样就可以将数据库中的文件导出到指定的文件夹。

上面的test.sql文件是我们需要执行的代码,@后面跟的是文件的路径,test.sql文件详情如下:
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

上面代码中,spool开始到spool off结束,中间的部分是我们要执行的sql语句,spool后面表示生成文件的位置,即将select得出的数据内容写到什么地方去。
上面那一对set是一个设定的过程,具体如下:

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

!!!补充:
我们想要输出不同格式的数据,这个时候需要对select内容进行规范。
正常下:select id, username, password from table
出现的结果是:
1 John 1234
2 Jack 12345
3 Rose 2345
4 Joe 384657
5 Tom 384655
6 Jordan 384455
然而有时候我们需要输出1,John,1234这种格式,此时有两种方法:
(1)对sql文件中的select语句格式进行改变:
select id||’,’||username||’,’||password||’,’ from table
(2)通过set设置,令set colsep‘,’;

这两种方法都可以达到同样的效果,但是方法(2)具有很多的不确定性,因此推荐使用方法(1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值