Spool缓冲池技术导出Oracle数据为文本文件

2014-11-24 18:46:38 · 作者: · 浏览: 1

1、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件名:


spool d:/output.txt



2、


set heading off --去掉字段名


set time off echo off head off --此行设置不计算时间 不显示sql语句 不每隔几行现一下列名


set pagesize 0 --去掉没格几行就显示一下的空行或多余的空格


set trims on --去掉全部空格,默认长度不够填充空格


set feedback off --不显示选择行数 不能和上一行和在一起


3、在命令行中随便输入你的SQL查询:


select mobile from customer;


select mobile from client;


……


3、在命令行中输入缓冲结果命令:


spool off;



则系统将缓冲池中的结果都输出到"output.txt"文件中,以TAB键分隔!


-----------------------------------------------------------------


ksh:


runlog=p_divide_001.log


nohup sqlplus " datatrans/hw@szdb1"</dev/null 2>&1 &


set serveroutput on


set timing on


set time on


spool $runlog


set autocommit on;


exec P_DIVIDE_INDEX_new(755,'CM_SUBS_SERVICE','SUBSID','P_DEL_DOUBLE_OPEN');


commit;


spool off


!



或者:


sqlplus -s $v_dest_tns_user/$v_dest_tns_pswd@$v_dest_tns_db << EOF | grep "DATA.VALUE" | while read s1 s2


set linesize 512 pagesize 512 head off


select 'DATA.VALUE' "FIELDNAME",


decode(data_type,'DATE', column_name||' date ''yyyy-mm-dd hh24:mi:ss'' '||


decode(column_id,$v_max_column_id, '',','),


'VARCHAR2', column_name||' char('||to_char(data_length)||')'||


decode(column_id,$v_max_column_id, '',','),


column_name|| decode(column_id,$v_max_column_id, '',','))


from all_tab_columns


where owner=upper('$v_dest_tns_user') and table_name=upper('$v_table_name')


order by column_id;


EOF


do


echo $s2 >> ./$v_datafile_name.ctl


done



----------------


sqlplus -s datatrans/hw@szdb1 <sql.log


set linesize 1024 pagesize 512 head off


select * from dt_region;


EOF




SQL> set echo on --设置运行命令是是否显示语句


SQL> set feedback on --设置显示“已选择XX行”


SQL> set colsep | --设置列与列之间的分割符号


SQL> set pagesize 10 --设置每一页的行数


SQL> set serveroutput on --设置允许显示输出类似dbms_output


SQL> set heading on --设置显示列名


SQL> set timing on --设置显示“已用时间:XXXX”


SQL> set time on --设置显示当前时间


SQL> set autotrace on --设置允许对执行的sql进行分析



set verify off --可以关闭和打开提示确认信息old 1和new 1的显示.


set colsep '' --域输出分隔符


set linesize 4000 --输出一行字符个数,缺省为80


set pagesize 0 --输出每页行数,缺省为24,为了避免分页,可设定为0。


set num 16(或者set numwidth 16) --输出number类型域长度,缺省为10


set trimspool on --去除重定向(spool)输出每行的拖尾空格,缺省为off


set heading off --输出域标题,缺省为on


set feedback off --回显本次sql命令处理的记录条数,缺省为on


set termout off;  --显示脚本中的命令的执行结果,缺省为on


set timing off;  --显示每条sql命令的耗时,缺省为off


set trimout on;  --去除标准输出每行的拖尾空格,缺省为off


set echo off --显示start启动的脚本中的每个sql命令,缺省为on