zoukankan      html  css  js  c++  java
  • 定时导出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文件执行即可。
  • 相关阅读:
    sqlserver更新数据表结构增加新字段时,和它相关联的视图出现错列现象
    form表单中的Input使用disabled不能提交的解决方法
    MVC4升级到MVC5的问题,安全透明方法“WebMatrix.WebData.PreApplicationStartCode.Start()”尝试访问安全关键方法“System.Web.WebPages.Razor.WebPageRazorHost.AddGlobalImport(System.String)”失败
    快速建立一个手机网站
    NoSQLMongoDB选择
    基于HTML5手机技术方案(如Phonegap)的调试方案
    最后的绝唱Symbian 最新的IDE开发环境搭建(Updated on 20110307)
    由NodeJS浅谈无敌的前端开发工程师
    物联网(1)手机NFC识别方案平台
    大话网站从Hello World到高并发网站
  • 原文地址:https://www.cnblogs.com/xieon1986/p/3937159.html
Copyright © 2011-2022 走看看