使用PL/SQL的导出功能,操作简单方便,可是往往数据量大的时候,会超出导出的限制。此时我们使用spool工具可以很好地解决导出大量数据的问题。以下我们通过一个实例进行说明
set colsep , ###设定以,作为分隔符
col MSISDN hea a for a20 ###设置列的长度为20个字符
col contentid hea cid for a20 ###设置列的长度为20个字符
col content hea c for a200 ###设置列的长度为200个字符
col CREATEDATE hea date for a40 ###设置列的长度为40个字符
col UA for a40 ###设置列的长度为40个字符
col type for a10 ###设置列的长度为10个字符
set feedback off ##一律不显示查询的行数(默认只有结果大于6行时才显示结果的行数)
set echo off ##显示start启动的脚本中的每个sql命令,缺省为on
set verify off ##不显示替代变量被替代前后的语句
set heading off ###不显示字段名称,缺省为on
set trimout on ##去除标准输出每行的拖尾空格,缺省为off
set pagesize 0 ###所有的输出内容为一页并且不显示列标题,与set heading on互斥
set linesize 500 ##输出一行字符个数为500,缺省为80
spool $path/tmp/comment_${DATE}.csv ##导出数据存放的文本
select MSISDN,CREATEDATE,content,contentid,UA,TYPE
from table t where createdate>to_date('2016-04-24 23:59:59','yyyy-mm-dd hh24:mi:ss')
and createdate<to_date('2016-04-26 00:00:00','yyyy-mm-dd hh24:mi:ss') ; ###SQL语句
spool off ##关闭spool输出,只有关闭spool输出,才会在输出文件中看到输出的内容
exit ##退出SQLPLUS界面