spool

一、常用设置

set lin 1000    --一行可容纳字符数{80|n};输出大于设置值,则折行显示
set wrap on    --输出行长度大于设置长度时(set lin n设置);值为on,多余字符另起一行显示,否则多余字符将被切除,不予显示
set pages 100    --设置每页行数,值为0时,输出为一页且不显示列标题,为避免分页,可设定为0
set newpage none  --设置页与页之间的分隔{1|n|none};值为0时在每页开头有一个小黑方框;值为n时在页和页之间隔着n个空行;为none时,在页和页之间没有任何间隔
set heading off       --是否显示列标题,缺省为on
set timing on      --显示每个sql语句花费的执行时间
set echo off        --在用start执行一个sql脚本时,是否显示脚本中正在执行的sql语句
set feedback off      --是否回显本次sql命令处理的记录条数,缺省为on
set termout off       --是否在屏幕上显示输出的内容,或脚本中的命令的执行结果,缺省为on
set trimout on        --去除标准输出每行后面多余的空格,缺省为off
set trimspool on     --去除重定向(spool)输出每行的拖尾空格,缺省为off
set null text      --显示时,用text值代替null值;
set serveroutput off --是否显示用dbms_output.put_line包进行输出的信息
set verify off     --是否显示替代变量被替代前后的语句;
set colsep ‘‘           --域输出分隔符

二、应用

工作运用时导出文本数据的常用格式:
set lin 1000 pages 0 newpage none heading off feedback off echo off trimout on trimspool on
set echo off feedback off trimout on trimspool on lin 1000 pages 0
set colsep ‘|‘ echo off feed off term off heading off trims off trimspool on linesize 10000 pagesize 0 newpage 1
spool 路径+文件名
--需要执行的sql代码
spool off

输出规则文件:
方式一:
set colsep ‘|‘ trimspool on lin 120 pages 2000 newpage 1 heading off term off feedback off num 18   
spool 路径+文件名
select * from tb_name;
spool off
方式二:
set trimspool on lin 120 pages 2000 newpage 1 heading off term off
spool 路径+文件名
select col1||‘,‘||col2||‘,‘||col3||‘,‘||col4||‘..‘ from tb_name;
spool off
注:方法一采用设定分隔符方式,方法二将分隔符拼接在select语句中,即手工控制输出格式。 实践中,发现通过方法一导出来的数据具有很大的不确定性,这种方法导出来的数据再由sqlldr导入的时候出错的可能性在95%以上,尤其对大批量的数据表,如100万条记录的表更是如此,且导出的数据文件很大。而方法二导出的数据文件格式很规整,数据文件的大小也比方法一小很多。经这种方法导出来的数据文件再由sqlldr导入时,出错的可能性很小,基本都可以导入成功。

脚本实现:spool_test.sh
#!/bin/sh
db_user=test
db_pwd=oracle
db_serv=orcl
sqlplus -s $db_user/[email protected]$db_serv <<EOF
set trimspool on lin 120 pages 2000 newpage 1 heading off term off
spool test.txt
select id||‘|‘||name||‘|‘||type||‘|‘||to_number(to_char(sysdate,‘yyyymmdd‘)) from t;
spool off
EOF

时间: 2024-10-27 02:35:30

spool的相关文章

/var/spool/postfix/maildrop 下有大量文件

参考链接:http://www.shangxueba.com/jingyan/121368.html /var/spool/postfix/maildrop  下有大量文件,怎么会有这么多的文件呢 在网上搜索之后明白是mail没有成功的邮件.由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面.如果sendmail或者pos

什么是spool系统,什么是预输入,什么是缓输出?

操作系统提供外部设备联机同时操作的功能设备spool系统,又称为假脱机系统. spool系统在应用程序执行前将应用程序的信息通过独占设备预先输入到辅存上的一个特定的存储区域存放好.称为预输入. 在应用程序执行中,也不必直接启动独占设备输出数据,而只要将其输出数据写入磁盘中存取,在应用程序执行完毕后,由操作系统来组织信息输出,称为缓输出.

禁用nested loop join里的spool

禁用nested loop join里的spool 转载自: https://blogs.msdn.microsoft.com/psssql/2015/12/15/spool-operator-and-trace-flag-8690/ https://answers.sqlperformance.com/questions/698/lazy-spool.html 在nested loop join里常常会看到一个spool操作符 这个spool 又名'performance spool',目的是

spool命令、创建一个表,创建并且copy表,查看别的用户下的表,rowid行地址 索引的时候使用,表的增删改查,删除表,oracle的回收站

  1.spool命令 spool "D:\test.txt" spool off SQL> host cls 2.创建一个表 SQL> --条件(1):有创建表的权限,(2):有表空间 SQL> desc t4; 名称                                      是否为空? 类型 ----------------------------------------- -------- ------------------------

You have new mail in /var/spool/mail/root

1.在进入系统的时候经常提示You have new mail in /var/spool/mail/root echo "unset MAILCHECK" >> /etc/profile source /etc/profile 关闭sendmail的功能:chmod 0 /usr/sbin/sendmailmv /usr/sbin/sendmail /usr/sbin/sendmail.bakln -s /var/qmail/bin/sendmail /usr/sbin/

/var/spool/postfix/maildrop/ 是否可清理

故障原因: 今天查看硬盘剩余的容量,发现'/'目录下占用了大量的空间:可我在这个目录下面没有放什么东西:仔细查看在/var/spool/postfix/maildrop/ 中发现了大量的文件.怎么会有这么多的文件呢,先删除. 在网上搜索之后明白是mail没有成功的邮件.由于linux在执行cron时,会将cron执行脚本中的output和warning信息,都会以邮件的形式发送cron所有者, 而我的服务器中关闭了postfix,导致邮件发送不成功,全部小文件堆积在了maildrop目录下面.如

/var/spool/clientmqueue 下生成太多文件处理

问题现象: linux操作系统中的/var/spool/clientmqueue/目录下存在大量文件. 原因分析: 系统中有用户开启了cron,而cron中执行的程序有输出内容,输出内容会以邮件形式发给cron的用户,而sendmail没有启动所以就产生了这些文件: 解决办法: 1. 将crontab里面的命令后面加上> /dev/null 2>&12.知识点:2>:重定向错误.2>&1:把错误重定向到输出要送到的地方.即把上述命令的执行结果重定向到/dev/nul

关闭CentOS6下“You have new mail in /var/spool/mail/root”的提示

CentOS下我们在输入命令执行完结果之后,系统总是会出现一行提示信息:"You have new mail in /var/spool/mail/root",虽然没有对系统造成啥影响,但是总会让操作的人觉得不爽,如是决定屏蔽它: [[email protected] ~]# echo "unset MAILCHECK">>/etc/profile && source /etc/profile [[email protected] ~]#

Oracle录屏命令spool的使用

SPOOL可以把Oracle客户端SQLPLUS的输出导入到一个文本中,可以导出html.CSV等形式,其语法如下: spool <filename> [rep/append] 屏幕输出保留到指定文件中,如果文件存在想替换内容使用replace,追加内容到文件中使用append 关闭并把输出发送到系统打印机打印用spool out,不过这个命令在某些系统不能用 关闭屏幕内容输出到文件使用spool off 比如我们想要把Oracle各表空间的使用情况输出为HTML格式的报表: SET MARK

SPOOL、SQLLOADER数据导出导入的一点小总结

1.SQLLOADER的CONTROL文件 //********************************************************************************//基本格式:LOAD DATA INFILE 'T.DAT' // 要导入的数据文件(格式1) //INFILE 'TT.DAT' // 导入多个文件(可以和格式1并列使用) //INFILE * // 要导入的内容就在CONTROL文件里 下面的BEGINDATA后面就是导入的内容(和格