1.spool的作用是什么?
spool的作用可以用一句话来描述:在sqlplus中用来保存或打印查询结果。
通过spool 命令,可以将select 数据库的内容写到文件中,通过在sqlplus设置一些参数,使得按指定方式写到文件中。
spool 是sqlplus 下的导出运行命令;execute执行的是sql语句
对于Oracle数据库操作主要使用的是命令行方式,而所有的命令都使用sqlplus完成 (sqlplus的定义:参考SQL*PLUS_百度百科)
2.语法介绍
oracle 10g、11g spool语法
SPO[OL] [file_name[.ext] [CRE[ATE] | REP[LACE] | APP[END]] | OFF | OUT]
file_name[.txt]
保存查询结果集的的路径和文件名,如果没有指定后缀名,默认名一般为.lst或.lis。如果指定系统文件为/dev/null and /dev/stderr,则不会添加后缀名。
off
完成spool。
out
停止spool,并将文件输出到终端设备上,如打印机(可能有些操作系统不支持)。
我们从语法上可以看到,oracle在10g、11g中对spool增加了create、replace、append选项,
create
创建指定文件名的新文件;如指定文件存在,则报文件存在错误。
replace
如果指定文件存在则覆盖替换;如指定文件不存在,则创建,replace为spool默认选项。
append
向指定文件名中追加内容;如指定文件不存在,则创建。
sqlplus spool的create、replace、append选项示例
3.利用sqlplus spool将表导成csv文件
sqlplus oracle/pwd@192.168.10.16:1521/orl @/tmp/lxm/export.sql
export.sql中的脚本如下:
set trimspool on
set linesize 20000
set pagesize 0
set echo off
set feedback off
set newpage 1
set heading off
set wrap off SQLBLANKLINES ON ---去掉空行
set term off
spool /home/oracle/aaa.csv
select python_student.name||','||python_student.age
from python_student;
spool off
exit
运行结果如下:
打开aaa.csv文件,内容如下
Lily,16
Lucy,15
Jim,18
Kate,19
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
set echo on --是否显示执行的命令内容
set feedback off --是否显示 * rows selected
set heading off --是否显示字段的名称
set verify off --是否显示替代变量被替代前后的语句。fil
set trimspool off --去字段空格
set pagesize 1000 --页面大小
set linesize 50//linesize设定尽量根据需要来设定,大了生成的文件也大
在安装了oracle的机器上就可以报告 plsql的命令,将远程oracle数据库上的文件导出至本地。需要带上IP地址和端口号。
参考:Oracle中SPOOL命令使用方法详解_guanyi的博客-CSDN博客_spool
————————————————
版权声明:本文为CSDN博主「你若安好我便天晴」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lixiaomei0623/article/details/121274473