昨天有个需求,让我导出数据到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
- 把上面脚本保存到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等; 具体就看你怎么使用了;总之这是一中非常便捷的方式,你不妨尝试一番!
继续阅读
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏