oracle导出文本文件数据的方法貌似只有sqlplus的spool命令,要定期导出需要借助os的计划任务之类的,不过10g中dbms_schedualr也支持直接掉os批处理文件。 文件名动态命名为当前日期。 例如,--bat文件D:\oracle92\bin\sqlplus @C:\zhjh\demo.sql --C:\zhjh\demo.sqlSET NEWPAGE NONE
SET HEADING OFF
SET SPACE 0
SET PAGESIZE 0
SET TRIMOUT ON
SET TRIMSPOOL ON
SET LINESIZE 2500
set colsep '|'
set feedback off
set echo off
SET VERIFY OFF
set termout on --如果数据量比较大,要把屏幕显示输出关掉提高性能
column v_date new_value filename;
select to_char(sysdate,'yyyymmdd') || '.dat' v_date from dual;
spool c:\&&filename
select * from scott.emp;
spool off; --执行后 7369|SMITH |CLERK | 7902|17-DEC-80| 800| | 20
7499|ALLEN |SALESMAN | 7698|20-FEB-81| 1600| 300| 30
7521|WARD |SALESMAN | 7698|22-FEB-81| 1250| 500| 30
7566|JONES |MANAGER | 7839|02-APR-81| 2975| | 20
7654|MARTIN |SALESMAN | 7698|28-SEP-81| 1250| 1400| 30
7698|BLAKE |MANAGER | 7839|01-MAY-81| 2850| | 30
7782|CLARK |MANAGER | 7839|09-JUN-81| 2450| | 10
7788|SCOTT |ANALYST | 7566|19-APR-87| 3000| | 20
7839|KING |PRESIDENT | |17-NOV-81| 5000| | 10
7844|TURNER |SALESMAN | 7698|08-SEP-81| 1500| 0| 30
7876|ADAMS |CLERK | 7788|23-MAY-87| 1100| | 20
7900|JAMES |CLERK | 7698|03-DEC-81| 950| | 30
7902|FORD |ANALYST | 7566|03-DEC-81| 3000| | 20
7934|MILLER |CLERK | 7782|23-JAN-82| 1300| | 10
然后再用任何调度工具调度即可。 海量数据导出的话可以使用并行导出,用条件区分开,这样可以提高导出性能。 在导入teradta数据库时,使用fastload即可,并且该工具支持一次从多个文件导入。
set命令使用说明:
SQL>set colsep' '; //-域输出分隔符
SQL>set newp none //设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的
SQL>set echo off; //显示start启动的脚本中的每个sql命令,缺省为on
SQL> set echo on //设置运行命令是是否显示语句
SQL> set feedback on; //设置显示“已选择XX行”
SQL>set feedback off; //回显本次sql命令处理的记录条数,缺省为on即去掉最后的 "已经选择10000行"
SQL>set heading off; //输出域标题,缺省为on 设置为off就去掉了select结果的字段名,只显示数据
SQL>set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。
SQL>set linesize 80; //输出一行字符个数,缺省为80
SQL>set numwidth 12; //输出number类型域长度,缺省为10
SQL>set termout off; //显示脚本中的命令的执行结果,缺省为on
SQL>set trimout on; //去除标准输出每行的拖尾空格,缺省为off
SQL>set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off
SQL>set serveroutput on; //设置允许显示输出类似dbms_output
SQL> set timing on; //设置显示“已用时间:XXXX”
SQL> set autotrace on-; //设置允许对执行的sql进行分析
set verify off //可以关闭和打开提示确认信息old 1和new 1的显示.
SET TERM[OUT]{ON|OFF}
是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。设置SETTERMOUTOFF,输出的内容只保存在输出文件中,不会显示在屏幕上,提高了SPOOL输出速度。
set命令介绍见:
http://blog.csdn.net/lichangzai/article/details/10000995
oracle官方:http://docs.oracle.com/cd/E11882_01/server.112/e16604/ch_twelve040.htm#SQPUG075
tianlesoftware:http://blog.csdn.net/tianlesoftware/article/details/5270191
实验案例:http://wallimn.iteye.com/blog/472182