Ftp实现自动读取本地文件上传到服务器

版权声明:本文为博主原创文章,未经博主女朋友允许不得转载。 https://blog.csdn.net/qq_26442553/article/details/85081650

需求:最近有个需求,类似需要将pre环境的oracle文件,放到prd环境中hive集群中存储,但是因为数据源和数据存储节点不在一个环境中,所以无法通信配置实现数据的直接传输。

解决方案:

 1.写脚本自动将oracle中数据写入到本地指定文件夹。

 2.通过脚本让prd环境的ftp服务器自动读取本地文件到服务器节点,然后在通过定时hive任务,以触发的形式自动将ftp服务器中的数据读入到hive分区表中,最后进行系列的定时运算和存储。

1.实现将oracle文件自动写入到本地

1.以windows环境为例,在D:\oracle_to_ftp目录下创建‘导数脚本.sql’,内容如下:

set linesize 1000
set pagesize 0
set echo off
set termout off
set heading off
set feedback off
SET trims ON
set term off
SET trimspool ON
SET trimout ON
spool 'D:\oracle_to_ftp\aaaaa.txt';    --这是将oracle文件写入到本地的路径和格式
select   --这里是oracle的查询语句
l.lncontcode||','||l.borrnm||','||l.lncardno||','||d.duecode||','
||d.lnduebal||','||to_char(sysdate,'yyyymmdd') as ReportTime 
from t_loancon l,t_duebill d 
where l.lncontcode = d.lncontcode   and l.contest ='1'
and l.valityflag='0' and d.valityflag='0'  and l.stat <>'30' ;
spool off
exit;

2.创建基于dos的自动化脚本“点击开始导数.cmd”文件,内容如下:

    sqlplus root/123456@DummyDatabase @导数脚本.sql   

    --注意这是oracle的配置信息,账号密码,实例名,本地要配置oracle的连接。

配置完后执行上面的'点击开始导数.cmd' 系统就会自动将远程oracle中查询结果导入本地D:\oracle_to_ftp\aaaaa.txt"文件

2.ftp自动读取本地文件上传到远程 ftp服务器指定目录下

在本地创建一个‘点击开始上传数据.bat’,内容如下:

@Echo Off
Echo open 12.18.206.34 >ftp.up   #这里是ftp远程服务器ip
Echo my_ftp>>ftp.up     #这里是ftp账号
Echo 123456>>ftp.up     #这里是密码
Echo cd /ftp_hive >>ftp.up
Echo binary>>ftp.up
Echo put "D:\oracle_to_ftp\aaaaa.txt">>ftp.up
Echo bye>>ftp.up
FTP -s:ftp.up
del ftp.up /q
Pause

执行上面bat脚本,系统就会自动将本地的aaaaa.txt文件上传到ftp文件下,覆盖的形式。相当于自动更新文件。

3.配置Hive交换任务,自动读取ftp文件到Hive表中

4.对Hive表中的数据进行分析与存储

猜你喜欢

转载自blog.csdn.net/qq_26442553/article/details/85081650
今日推荐