一个努力中的公众号
长的好看的人都关注了
前言
Kettle简介
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行, 数据抽取高效稳定。Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle下载配置
Kettle官网:
https://sourceforge.net/projects/pentaho/files/Data%20Integration/
本文使用kettle版本为pdi-ce-7.1
2.1 打开上方官网连接、选择7.1版本
2.2选择下载ZIP版本、点击后跳转新页面,等待三秒会自动下载
2.3 因为Kettle是绿色免安装版本,所以下载以后的zip解压后,可以直接运行
Spoon.bat:在Windows平台上运行spoon;
Spoon.sh:在Linux、AppleOSX、Solaris平台上运行Spoon。
2.4 初步启动和使用可能出现的问题总结
2.4.1 Kettle是纯java编写,所以需要安装jdk配置环境变量。建议安装jdk1.8及以上环境。
2.4.2 Kettle默认启动配置是分配内存256G、数据量大、大对象时很容易出现内存溢出现象
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m"
改为:
if"%PENTAHO_DI_JAVA_OPTIONS%"==""set PENTAHO_DI_JAVA_OPTIONS="-Xms2048m""-Xmx4096m" "-XX:MaxPermSize=512m"
复制
Kettle 使用
2.1 了解如何使用Kettle
双击Spoon.bat 文件打开Kettle、界面如下图:
Kettle的工作原理简单来说就是,先创建一个作业、然后创建对应具体业务操作(转换)、然后在作业中将转换串联起来工作,最终得到需要的数据/文件。
整个操作业务流程类似于工作流,从开始节点到完成。例如:
2.2 创建步骤
窗口左上角点击文件、选择新建、新建转换
2.3 编辑配置转换
如上2.2操作后,窗口打开的就是新增的步骤(转换)左侧窗口中罗列的就是相关操作工具、右侧空白则是接下来步骤中要执行的操作。
在右侧窗口空白处鼠标右键即可进行设置转换、可以设置转换的名称、以及使用到的参数等
新增操作表输入
鼠标选择刚拖进去的表输入
然后进行设置、选择编辑步骤、设置步骤名称与数据库连接。
设置数据库连接的时候注意,需要单独下载对应数据库驱动jar包、不然会报错
数据库驱动jar包放在data-integration\lib 文件夹下
设置数据库连接后记得验证下
数据库连接设置好以后,就可以创建或执行对应的sql、sql编写完成后,可以点击预览查看结果。
表输入配置好以后、再添加一条作业(复制记录到结果),也就是将表输入的查询结果复制到结果中,然后再做后续操作。鼠标选择表输入、滑轮将链接关系到作业(复制记录到结果)上,即可绑定关系。
然后执行得到结果
Kettle 导出多Excel以及多Sheet
3.1 概述
整体流程如下图,共有四个节点:
开始-获取Excel名称与Sheet名称节点-读取对应Excel和Sheet数据并写入Excel文件-结束
3.2 获取Excel名称与Sheet名称节点
新建转换
创建:表输入、新建创建数据库连接,编写读取Excel名称与Sheet的Sql
创建:复制记录到结果
获取Excel名称与Sheet名称节点如图:
3.3 读取对应Excel和Sheet数据并写入Excel文件
新建转换
右键空白区域,选择转换设置、添加所需的参数
创建:表输入、新建创建数据库连接,编写读取Excel名称与Sheet的Sql
创建:Microsoft Excel 输出、右键编辑步骤、设置导出excel的格式
如果输出记录存在,覆盖已存在的单元格
滑动窗口至最下方,点击获取字段、获取导出到Excel的所有字段、如果字段不需要导出,那么单独删除行即可
读取对应Excel和Sheet数据并写入Excel文件节点如图:
整体流程插入START与成功节点即可完成所有设置。
3.3 执行作业
执行流程、即可得到对应的Excel
查看日志输出
打开导出Excel存放的文件夹即可看到所有的Excel文件
如果对您有帮助 请点个关注,万分感谢
(QQ招聘群 710566091
微信招聘群 请加图图微信)