1. linux定时任务的配置请自行学习。

2. 如果数据库不在本机服务器,需要安装sqlplus客户端,请查看笔者的另外一篇文章学习sqlplus的安装。

3. shell脚本查询数据库结果输出至文件:

$SQLPLUS_HOME/sqlplus username/password@//host:port/sid<< EOF

------------------------------------------------------------------------------
--set echo on/off       是否显示脚本中的需要执行的命令
--set feedback on/off   是否显示 select 结果之后返回多少行的提示
--set linesize n        设置一行最多显示多少字符,之前就是因为 n 设得过大,导致行与行之间有空白行
--set termout on/off    在执行脚本时是否在屏幕上输出结果,如果 spool 到文件可以将其关闭
--set heading on/off    是否显示查询结果的列名,如果设置为 off,将用空白行代替
--set pagesize n        设置每页的行数,将 n 设为 0 可以不显示所有headings, page breaks, titles, the initial blank line, and other formatting information
--set trimspool on/off  在 spool 到文件时是否去除输出结果中行末尾的空白行或者空白字符
--set trimout on/off    在屏幕输出时是否去掉行末尾的空白
--set trimout on/off    是否去掉屏幕上输出结果行末尾的空白字符
--set space n           输出列间空格数设置

set echo off
set feedback off
set linesize 32767
set termout off
set heading on
set pagesize 50000
set trimpool on
set space 2

spool $SQLPLUS_HOME/job/result.txt
@$SQLPLUS_HOME/job/sql.sql
spool off
quit;
EOF

4. 将上述脚本复制进data.sh文件,然后执行sh -x data.sh命令,即可得到想要的结果,注意sql.sql文件要自己根据需求写sql语句。

01-28 14:39