sqlplus--spool命令参数详解

sqlplus--SPOOL参数详解
Spool是Oracle快速导出数据的工具,是sqlplus的指令,不是sql语法里的东西

一、Spool常用的设置
set arraysize 5000;  //此参数可提高spool卸载的速度,最大可以设置为5000
set autotrace on;    //设置允许对执行的sql进行分析
set colsep ' ';   //域输出分隔符
set echo off;    //显示start启动的脚本中的每个sql命令,缺省为on
set feedback off;  //回显本次sql命令处理的记录条数,缺省为on
set heading off;   //输出域标题,缺省为on
set pagesize 0;   //输出每页行数,缺省为24,为了避免分页,可设定为0。
set newpage 1;       //设置页与页之间的分隔{1|n|none};当值为0时在每页开头有一个小的黑方框;当值为n时在页和页之间隔着n个空行;当为none时,会在页和页之间没有任何间隔;
set newp none;       //设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的
set num 18;          //设置数字的长度,如果不够大,则用科学记数法显示
set numwidth 12;    //输出number类型域长度,缺省为10
set null text;         //显示时,用text值代替null值
set serveroutput on; //设置允许显示输出类似dbms_output;--编写存储过程时,大多会将必要的信息输出;
set space 0         //设置各列间的空格数
set termout off;   //显示脚本中的命令的执行结果,缺省为on
set trimout on;   //去除标准输出每行的拖尾空格,缺省为off
set trimspool on;  //去除重定向(spool)输出每行的拖尾空格,缺省为off
set timing on;        //显示每个sql语句花费的执行时间,设置显示“已用时间:xxxx”
set verify off         //是否显示替代变量被替代前后的语句
set wrap on;          //输出行长度大于设置行长度时(用set linesize n命令设置);值为on时,多余的字符另起一行显示,否则多余的字符将被切除,不予显示;



二、Spool 使用方法
说明:spool不但可以把数据导出到txt,也可以导出到csv等;不但可以导数据,也可以导出字符,拼装成sql文件等。

1.采用设置分隔符的方法
说明:设定分隔符后,由sqlplus自己使用设定的分隔符对字段进行分割。
set colsep '|' --设置|为列分隔符   
set trimspool on   
set linesize 120   
set pagesize 2000   
set newpage 1   
set heading off   
set term off
set num 18
set feedback off   
spool e:\temp.txt
select * from tablename;   
spool off



2.采用分隔符并接,手工控制输出格式
说明:最佳方法,该方法可以运用各种oracle函数处理导入时的字符。
set trimspool on
set linesize 120
set pagesize 2000
set newpage 1
set heading off
set term off
spool e:\fs_temp_tb_cm_serv_20120703.txt
select '地市,县区,用户,时间,流量,费用' form dual;
select
a_name||','||
replace(replace(replace(b_name,chr(9)),chr(10)),chr(13))||','||
replace(c_name,'\"')||','||
to_char(create_time,'yyyy-mm-dd hh24:mi:ss')||','||
net_flux||','||
all_fee
from temp_ltao10;
spool off




3.spool不但可以导出数据,也可以生成sql文件
spool c:\table.sql;   
select
'
insert into changetable
values('|| id||',',changedate||',',areaid||',',workunit||',',dept||',',post||',',address||',',zip||',',note||',',city||',',province||',',country||',',status||',',lawpeopleid||',',reason||',',feedback||');'
from change
where lawpeopleid not in (select id from LAWPEOPLE t );  
spool off

猜你喜欢

转载自www.cnblogs.com/sunziying/p/8954285.html