linux 定时导出sql查询结果文件

Posted simplelil

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux 定时导出sql查询结果文件相关的知识,希望对你有一定的参考价值。

如果想在服务器端生成sql查询结果的txt文件。

大体思路就是:

1.创建一个到处txt文件的sql脚本。

set ARRAYSIZE 50 --从数据库往客户端一次发送记录数
set linesize 100 --一行的字符数
SET PAGESIZE 0 --设置不分页
set timing off --关闭显示sql执行时间
set heading off --不显示每行的列名
set feedback off --回显本次sql命令处理的记录条数,缺省为on
SET TRIMOUT ON --去除标准输出每行的拖尾空格,缺省为off
set trimspool on --去除重定向(spool)输出每行的拖尾空格,缺省为off
set termout off --显示脚本中的命令的执行结果,缺省为on

define r_filename=&1 --定义导出文件路径和文件名
spool &r_filename;
select empno||,||ename from emp;
spool off;

 

2.创建一个shell脚本调用写好的sql脚本。

#! /bin/bash

START_TIME=`date +%Y%m%d%H%M%S`

echo $START_TIME

TIMESTAMP=`date +%Y%m%d%H%M%S`

DB_USER="apps/[email protected]"
PATH_FILE=$HOME/sql/tt$TIMESTAMP
SQL_FILE=$HOME/sql/tt.sql

echo Start time is: $TIMESTAMP
echo SQL file is: $SQL_FILE
echo OUT file is: $PATH_FILE

sqlplus -S $DB_USER <<EOF
@$SQL_FILE $PATH_FILE
quit
EOF

END_TIME=`date +%Y%m%d%H%M%S`
echo $END_TIME

 

3.可以创建一个linux的定时任务,定时调用如上shell脚本。

  1)先创建一个定时任务列表的文件,oraclecron

  

#分 时 日 月 星期 命令完全路径
#这条命令表示每个15分钟调用一次/home/oracle/myShell/ttt
15,30,45,0 * * * * /home/oracle/myShell/ttt

  2)把这个定时任务添加到系统crontab列表

crontab oraclecron

  3)可以用如下命令查看系统crontab任务,如果看到你在oraclecron文件中添加的任务就OK了。

crontab -l

4.从定时任务添加成功后,每逢整刻钟系统就会掉用 2 中创建的shell脚本,2 的shell脚本调用 1 的sql脚本。

  最终生成一个文件在oracle服务器上。

以上是关于linux 定时导出sql查询结果文件的主要内容,如果未能解决你的问题,请参考以下文章

怎么定时自动将SQL数据导出为Excel文件

pl/sql 把查询结果导出为dmp文件

如何在mysql里把数据导出成excel文件

如何把SQLServer表数据导出为Excel文件

如何将SQL server 2008 里的查询结果导出到 Excel 表内?

SQL查询并导出?