1.分析一下需求, 首先导出的得是txt文本并且有分行符区分字段,所以普通的exp语句导出为dmp文件的方式不能采用;
2.由于需要导出的是Oracle数据库的数据,因此考虑采用Oracle的spool工具导出数据;
3.由于需要 上传文件到指定的FTP服务器目录,因此需要掌握FTP的常用命令及调用方法;
4.考虑到每天都要导出文件,为了导出的文件不被覆盖, 需要将导出的文件改名,一般是在最后加上当前日期,起到备份的作用。
下面是具体代码实现:
新建st_exp.sql文件,复制以下内容:
set echo off
set feedback of
set newpage none
set verify off
set pagesize 0
set term off
set trims on
set linesize 1000
set heading off
set timing off
set numwidth 40
spool d:\st_exp\backup\T_ACCOUNT_INFO.txt
select id ||';'|| account_code ||';'|| account_name from t_account_info;
spool off
quit
新建st_exp.bat文件,复制以下内容:
@echo off
echo ***************************************************
echo ************** Author:HuJiao **********************
echo ************** Time:2018-11-30 ********************
echo ***************************************************
echo ----- 1.开始执行计划任务…… -----
echo ----- 2.获取当前日期时间…… -----
set yyyymmdd=%date:~0,4%%date:~5,2%%date:~8,2%
set hhmiss=%time:~0,2%%time:~3,2%%time:~6,2%
echo ----- 3.开始导出T_ACCOUNT_INFO表…… -----
rem 该方法为执行Oracle数据库的导出功能,数据备份为dmp文件
rem exp aps2/aps21234@orcl file= D:\st_exp.log tables=(T_ACCOUNT_INFO)
rem 该方法为通过sqlplus调用sql文件
sqlplus aps2/aps21234@orcl @d:\st_exp\st_exp.sql
echo ----- 4.开始上传T_ACCOUNT_INFO.txt文件到FTP目录…… -----
rem 连接到FTP服务器
echo open 192.168.0.104 21 > st_exp.ftp
rem 输入FTP服务器的用户名和密码
echo user admin 123456 >> st_exp.ftp
rem 设置传输模式为二进制方式传输 ascii/binary
echo binary >> st_exp.ftp
rem 关闭交互模式
echo prompt >> st_exp.ftp
rem 切换目前的本地目录
echo lcd d:\st_exp\backup >> st_exp.ftp
rem 传送文件之前将文件名修改成T_ACCOUNT_INFO_yyyymmdd.txt的格式
rename d:\st_exp\backup\T_ACCOUNT_INFO.txt T_ACCOUNT_INFO_%yyyymmdd%.txt
rem 切换FTP服务器的目录
echo cd /backup >> st_exp.ftp
rem 将文件上传到FTP服务器
echo put T_ACCOUNT_INFO_%yyyymmdd%.txt >> st_exp.ftp
rem 断开连接
echo bye >> st_exp.ftp
rem 指定存储FTP命令的文件
ftp -n -s:st_exp.ftp
rem 记录日志
set log=d:\st_exp\log\st_exp.log
echo -------------------------------- >> %log%
date /t >> %log%
time /t >> %log%
echo 导入成功! >> %log%
echo -------------------------------- >> %log%
rem 删除临时文件
del st_exp.ftp
rem del d:\st_exp\backup\T_ACCOUNT_INFO_%yyyymmdd%.txt
echo ----- 5.任务结束 -----
在D盘新建st_exp文件夹,st_exp文件夹里新建backup、log文件夹,将上面两个文件放在图示路径中:
双击运行st_exp.bat测试,backup文件夹里会有导出的数据备份,然后去你的FTP目录里看是否上传成功;代码里的实际路径根据你自己的实际路径更改。
测试没有问题的后在windows系统里创建计划任务,设置为每天执行某个时间点执行该脚本即可,如何创建计划任务不在这里详述,比较简单,自行百度。