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

该实例实现了通过windows定时任务来实现了将数据库中指定数据表数据导出为txt文本格式。其思路是通过可执行的bat文件去调用导出数据脚本,然后再在windows定时任务中调用该bat文件来实现。该示例需要能够运行的sqlplus环境,因此需要安装Oracle客户端等可运行环境。

实现了将数据库中日志表数据导出到指定文件夹下的.log文件,且该文件的命名方式采用按天来导出的格式(如:C:\HttpLog\20130115.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:\oracle\ora92\bin\sqlplus orcluser/orcl @C:Oracleout.ctl

说明:该bat文件直接在当前目录下创建名为HttpLog的文件夹,以便tabout.ctl脚本输出的文件存放到该目录下。其通过调用Oracle中sqlplus可执行文件来执行tabout.ctl脚本,所以该文件直接双击即可运行,无需其他操作。

3、通过windows定时任务实现自动定期执行

“在控制面板——任务计划——添加任务计划”中建立定期将数据库中日志表数据导出为文本格式(如:你可以根据需求设置为每天对日志表数据进行导出)。根据你当前对日志文件路径的存储需求,修改上面两个脚本中的存储路径,在windows定时任务直接调用logout.bat文件执行即可。

时间: 2024-09-29 05:31:39

定时导出Oracle数据表到文本文件的方法的相关文章

navicat如何导出mysql数据表结构

我们在创建数据库时会对字段进行设置,比如类型.长度等,如果字段多的话一个个设置非常麻烦,可以从其他地方已有的表导入数据表结构,怎么操作呢?我们拿navicat导出mysql数据表结构为例: 1.点击“工具”–>数据传输. 2.在弹出的窗口里左边可以选择需要导出的表,右边选择连接或文件(我要导出sql文件,所以我选的是文件)选择导出的位置. 3.如果只是想导出表结构而不需要表的数据,那么点击“高级”–>把“插入记录”前的勾去掉.如果需要导出数据,那么默认打勾就可以, 4.点击开始,直到进度条走到

如何利用Oracle外部表导入文本文件的数据

同事最近在忙数据一致性比对工作,需要对不同文本文件中的数据进行比对,有的文件较大,记录较多,如果用普通的文本编辑器打开的话,很显然,会很卡,甚至打不开. 基于此,可将该文本文件的数据导入到数据库中,在集合的层面进行比对. 那么如何将文本文件的数据导入到数据库中呢?在这里,主要利用了Oracle的外部表特性. Oracle外部表支持两种类型的驱动:一种是ORACLE_LOADER,外部表的数据必须来源于文件文件,另一种则是ORACLE_DATAPUMP,外部表的数据必须是二进制dump文件,该du

定时导出用户数据(expdp,impdp)

一 定时导出数据: #!/bin/bash##############################################################################################export PATH# Oracle SettingsTMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIR ORACLE_HOSTNAME=ol7.localdomain; export ORACLE_HOSTNAMEORACL

oracle 数据表中实现字段的自动增长

由于一直用的是Mysql数据库,今天刚好心血来潮,想着和Java都是同一个老板出来的oracle自己却不会,说出去会不会有点丢人,故就开始翻资料,看视频搞起来,一步一个脚 印,想着写点什么,就开始从创建表开始吧,好了,废话不多说了,开始上正题创建一个表: User表: create table user(    id number(5,0) not null primary key auto_increment,    deptid number(5,0) not null,    userna

oracle数据表对象

表示oracle数据库中非常重要的数据对象,也是主要的对象,今天,开始学习对表的管理!   一:表的数据类型 1:字符类型 CHAR :固定字符长度的字符串(查询速度快) vachar2 :变长字符串字段(节约空间) 2:数值类型 number(5,2) 前面整数,后面小数 3:日期类型 DATE   默认格式由NLS_DATE_FORMAT参数决定 4:LOB类型 BLOB:存储音乐.视频.图像等二进制文件 CLOB:字符格式的大对象 5:ROWID数据类型 伪列类型,存放数据记录的物理地址

Oracle数据表中的死锁情况解决方法

不知道干了啥,把数据表锁住了,没法update. 百度了各种方法,总结如下. 查看被锁住的表(两句都可以): select * from v$session t1, v$locked_object t2 where t1.sid=t2.SESSION_ID   select sess.sid, sess.serial#, lo.oracle_username, lo.os_user_name, ao.object_name, lo.locked_mode from v$locked_object

linux下导入oracle数据表

提前说明:这个是默认oracle已经安装好切数据库默认表空间已经创建好.之后将数据表dmp文件直接导入到默认表空间里(默认表空间不用再指定,因为创建数据库时已经指定默认表空间) linux命令如下: [[email protected] ~]$ imp test/test file=/home/oracle/tm_bus_passenger_updown.dmp ignore=y full=y //用户名和密码已经暗含默认表空间 文档结构如下 原文地址:https://www.cnblogs.c

Oracle 数据表之分区表

一.分区方法 建分区表准备: 1,创建4个测试用的表空间,每个表空间作为一个独立分区(考虑到Oracle中分区映射的实现方式,建议将表中的分区数设置为2的乘方,以便使数据均匀分布) create tablespace partition1 datafile '/home/oracle/app/oradata/orcl/partition1.dbf' size 20m; create tablespace partition2 datafile '/home/oracle/app/oradata/

Oracle数据表之间的数据同步

保证两个数据表结构相同,如不相同只能同步相同字段; 只是思路,具体请根据需求修改. declare cursor csrn_mon is select * from table2; row_mon csrn_mon%rowtype; cursor csrn_loc is select * from table1; row_loc csrn_loc%rowtype; cursor csrn_del is select xh from table1 minus select xh from tabl