• 定时导出Oracle数据表到文本文件的方法


    该实例实现了通过windows定时任务来实现了将数据库中指定数据表数据导出为txt文本格式。其思路是通过可执行的bat文件去调用导出数据脚本,然后再在windows定时任务中调用该bat文件来实现。该示例需要能够运行的sqlplus环境,因此需要安装Oracle客户端等可运行环境。
        实现了将数据库中日志表数据导出到指定文件夹下的.log文件,且该文件的命名方式采用按天来导出的格式(如:C:HttpLog20130115.log),当然具体路径根据你的需求可进行自定义设置。如果你不想建立windows定时任务来导出该日志,你也可以定期双击运行logout.bat文件即可实现。
        spool是sqlplus的命令,必须在sqlplus中使用,主要完成以标准输出方式输出sqlplus的命令及执行结果,一般常用户格式化导出oracle表数据。
        对于spool数据的sql语句,最好是自定义格式,以方便程序直接导入 ,示例SQL语句如:
    select col1||','||col2||','||col3||','||col4||','||to_number(to_char(col5,'YYYYMMDD')) from table_name;
     
    spool命令常用设置:
    set colsep','; //-域输出分隔符 
    set newp none //设置查询出来的数据分多少页显示,如果需要连续的数据,中间不要出现空行就把newp设置为none,这样输出的数据行都是连续的,中间没有空行之类的 
    set echo off; //显示start启动的脚本中的每个sql命令,缺省为on 
    set echo on //设置运行命令是是否显示语句 
    set feedback on; //设置显示“已选择XX行” 
    set feedback off; //回显本次sql命令处理的记录条数,缺省为on即去掉最后的“已经选择10000行”
    set heading off; //输出域标题,缺省为on 设置为off就去掉了select结果的字段名,只显示数据 
    set pagesize 0; //输出每页行数,缺省为24,为了避免分页,可设定为0。 
    set linesize 80; //输出一行字符个数,缺省为80 
    set numwidth 12; //输出number类型域长度,缺省为10 
    set termout off; //显示脚本中的命令的执行结果,缺省为on 
    set trimout on; //去除标准输出每行的拖尾空格,缺省为off 
    set trimspool on; //去除重定向(spool)输出每行的拖尾空格,缺省为off 
    set serveroutput on; //设置允许显示输出类似dbms_output。 
    set timing on; //设置显示“已用时间:XXXX”。 
    set autotrace on; //设置允许对执行的sql进行分析。 
    set verify off //可以关闭和打开提示确认信息old 1和new 1的显示。
     
    1、创建数据库日志表导出为文本文件的脚本tabout.ctl或tabout.sql
    注意:该日志导出后在c:HttpLog目录下
    tabout.ctl脚本内容如下:
    SET NEWPAGE NONE 
    SET HEADING OFF 
    SET TERM OFF
    SET SPACE 0 
    SET PAGESIZE 0 
    SET TRIMOUT ON 
    SET TRIMSPOOL ON
    SET LINESIZE 2500
    set feedback off
    set echo off
    SET VERIFY OFF
    column v_date new_value filename; 
    select to_char(sysdate,'yyyymmdd') || '.log' v_date from dual; 
    spool ..HttpLog&&filename              
    select id||','||name from orcluser.test; 
    spool off;
    exit;
     
    2、创建调用该脚本的logout.bat文件
    logout.bat内容如下
    mkdir ..HttpLog
    C:oracleora92insqlplus orcluser/orcl @C:Oracleout.ctl
     
    说明:该bat文件直接在当前目录下创建名为HttpLog的文件夹,以便tabout.ctl脚本输出的文件存放到该目录下。其通过调用Oracle中sqlplus可执行文件来执行tabout.ctl脚本,所以该文件直接双击即可运行,无需其他操作。
     
    3、通过windows定时任务实现自动定期执行
        “在控制面板——任务计划——添加任务计划”中建立定期将数据库中日志表数据导出为文本格式(如:你可以根据需求设置为每天对日志表数据进行导出)。根据你当前对日志文件路径的存储需求,修改上面两个脚本中的存储路径,在windows定时任务直接调用logout.bat文件执行即可。
  • 相关阅读:
    C#大小写字母转换函数
    vss安装及服务器端、客户端配置图文教程
    JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp)
    LoadRunner 录制IE 8卡死
    LoadRunner 11 安装及破解
    C#开发中常用加密解密方法解析
    Oracle 11g安装图文攻略
    IIS添加域名
    SQL2008中Merge的用法
    在T-SQL语句中访问远程数据库(openrowset/opendatasource/openquery)
  • 原文地址:https://www.cnblogs.com/xieon1986/p/3937159.html
Copyright © 2020-2023  润新知