Oracle Spool数据

  • A+
所属分类:Blog Oracle

昨天有个需求,让我导出数据到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.sql文件,然后登录数据库执行即可 sqlplus user/pwd @spool.sql 等待执行完成,就能看到spool出来的ac_load.txt文件了

    小结

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

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: