Kettle完成通用DB生成指定文件并通过FTP上传

Posted on Posted in kettle示例

 在生产环境中,我们经常会遇到数据定时同步的问题,这里整理出一个通用的FTP上传同步的程序(FTP下载入库的同步同理),供大家参考。本文以Windows环境为例进行日粒度同步数据。另外,本文所示例子,默认没有使用资源库。

一、实现的功能是什么?

  定时从数据库获取时间范围内的数据,然后将数据生成指定格式的文本文件,并将文件上传到指定的FTP服务器上。

二、需要准备什么环境?

  KETTLE运行环境;其他如通畅的网络,数据库信息,FTP信息,指定的文本格式,同步周期,均属于需求范畴,不予赘述。

三、本程序的特点

  1、可通过配置文件控制多节点采集(并行 or 串行皆可)

  2、可补采已过日期的数据

  3、可留存执行日志

  4、可指定文件名称和文本格式

四、程序概述

  1、程序组成

  包含一个入口脚本,两个作业(Job),三个转换(Transformation),三个文件夹(日志Logs,配置Configs,文件留存Files)。如下图所示:

 

  2、各组成的关系如下图所示

   3、配置文件说明

   \Configs\Allconfigs.xml

   各项解释看注释,修改配置文件filledfilled_date节点还可以进行补采数据。

  踩过的坑:关于分隔符,低版本的KETTLE可能不支持一些特殊字符,比如欧元符号 “€”;嗯,数据量不是特别大的话替换字符即可,大数据可能有效率困扰。

 

复制代码

<?xml version="1.0" encoding="utf-8" ?><root>
    <type name ="ftp1">
        <ftp>
            <ftp_ip>127.0.0.1</ftp_ip>
            <ftp_port>21</ftp_port>
            <ftp_user>ftpuser</ftp_user>
            <ftp_pass>ftpuser</ftp_pass>
            <!--远程路径,ftp工具登录后获取的路径,不是ftp站点的物理地址-->
            <remote_filepath>/test</remote_filepath>
            <!--本地文件路径-->
            <local_filepath>/Files</local_filepath>            
        </ftp>
        <file>
            <!--默认1,表示获取的是昨天的数据;0表示获取今天的数据;2表示获取前天的数据;以此类推-->
            <file_interval>1</file_interval>
            <!--文件前缀-->
            <file_ux>us_</file_ux>
            <!--文件后缀-->
            <file_dx>_dx</file_dx>
            <!--字段分隔符-->
            <file_split>,</file_split>
            <!--文件扩展名:csv,txt,log等-->
            <file_ex>csv</file_ex>
            <!--文件中日期格式 比如 ux_yyyyMMdd_ex;此日期为采集的时间点-->
            <file_dateset>yyyyMMddhh</file_dateset>
        </file>
        <fix>
            <!--是否补采,默认0,其他表示需要补采,补采则使用filled_date作为日期-->
            <filled>0</filled>
            <!--如果补采,补采的日期是哪天,格式:yyyyMMddhhmmss-->
            <filled_date></filled_date>
        </fix>
    </type></root>

复制代码

 

  4、读取配置文件

完整内容:https://www.cnblogs.com/missfox18/p/7642026.html