Oracle Spool 数据
in BlogOracle with 0 comment

Oracle Spool 数据

in BlogOracle with 0 comment

昨天有个需求,让我导出数据到txt文本,数据有150w
数据库是oracle,试了下spool方式导出非常快:

Oracle Spool常用设置

命令描述
set arraysize 1000;此参数可提高spool加载速度,最大可设置为5000
set autotrace on;设置允许对执行的sql进行分析
set colsep ',';设置输出分隔符
set echo off;不显示@spool.sql脚本里每个sql命令,缺省是on
set feedback off;回显本次sql命令处理的记录条数,缺省为on
set heading off;输出标题,字段的名字,缺省为on
set linesize 1000;每行允许的最大字符数,设置大些,免得数据被截断,但不宜过大,太大会大大降低导出的速度(注意必须与trimspool结合使用防止导出的文本有太多的尾部空格)
set pagesize 0;输出每页行数,页面大小,缺省为24,为了避免分页,可设定为0
set serveroutput on;设置允许显示输出类似dbms_output;--编写存储过程时,大多会将必要的信息输出;
set term off;不在屏幕上输出执行结果
set termout off;显示脚本中的命令的执行结果,缺省为on
set timing on;显示每个sql语句花费的执行时间,设置显示“已用时间:XXXX”
set trimout on;去除标准输出每行的拖尾空格,缺省为off
set trimspool on;去除重定向(spool)输出每行的拖尾空格,缺省为off

Oracle Spool 使用方法

spool可以把数据导出成txt,cvs等;不但可以导出数据,也可以导出字符串,拼装成sql文件等

set echo off 
set heading off feedback off pagesize 0
set linesize 1000
set TRIMSPOOL on
set term off; 
spool ac_load.txt; 
select t.cust_id || ',' || t.cust_nm || ',' || t.cst_tel || ',' || t.cst_hp || ',' ||
       t.ar_lcls_id || ',' || t.ar_mcls_id || ',' || t.ar_scls_id || ',' ||
       to_char(t.ord_date,'yyyy-mm-dd hh24:mi:ss') || ',' || t.addr_1 || ',' || t.addr_2
  from AC_LOAD t
where rownum<10;
spool off; 

等待执行完成,就能看到spool出来的ac_load.txt文件了

小结

Oracle spool是一种oracle导出数据的方式,
常用来做数据迁移,比如在A库spool某些字段的数据,传到B库做sqlldr加载;
也可以spool出cvs文档,然后转换成excl在做数据分析;
当然oracle还有更多的方式做数据迁移,比如exp/imp,expdp/impdp,copy from,dblink等;
具体就看你怎么使用了;总之这是一中非常便捷的方式,你不妨尝试一番!

Responses
点击这里给我发消息
嘿!有什么能帮到您的吗?