kettle使用详解(一)

kettle使用详解(配置以及创建一个简单的转换)

开篇:其实在很久之前,就有想写博客的想法,鉴于种种原因一直也没有开始下笔。总结真的是一门学问,既能提高自己,又能惠及他人,何乐而不为。
所以笔者决定通过一系列的原创博文,来为需要使用相同技术的同学提供一条捷径,让大家能避过一些坑,旨在共同提高。
此系列为kettle的使用第一篇文章,接下来会从基础配置,简单抽取一直到复杂的数据库转换为大家讲解kettle的使用。
每日一言:生活总是这样,不能叫人处处都满意。但我们还要热情的活下去。人活一生,值得爱的东西很多,不要因为一个不满意,就灰心。 ----路遥《人生》

kettle的配置以及创建一个简单的转换

由于kettle是java编写的数据抽取转换工具,所以启动kettle必须要有java环境支持,并且各个版本所对应的java版本有一定的要求,为了避免这写环境因素造成大家测试出现问题,下面列出本次demo的环境。
本地机器环境:

  1. 电脑系统 :winds10 64位 专业版;
  2. Java版本 :jdk1.8;
  3. kettle版本 :解压版 pdi-ce-6.1.0.1-196.zip;
  4. 数据库版本 :mysql 5.7

配置启动

保证机器配置好java环境变量(如果不会请自行百度java环境变量配置)。解压kettle压缩包,找到启动软件的批处理文件Spoon.bat,双击启动。
kettle使用详解(一)
启动后闪退的问题大概有以下三种情况:

  1. Java环境变量配置有误。

  2. 可能是Java版本太低了,jdk1.6以上版本才行,具体的可以查看spoon.bat配置文件。

  3. Java环境配置对了,但是启动不了spoon.bat,双击闪退
    使用cmd启动spoon.bat查看报错, could not create the java virtual machine。

    java虚拟内存不足。
    用编辑器打开spoon.bat 找到
    if “%PENTAHO_DI_JAVA_OPTIONS%” == “” set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" “-Xmx2048m” “-XX:MaxPermSize=256m” 为kettle设置的默认JVM内存。
    解决办法:
    将其改小为if “%PENTAHO_DI_JAVA_OPTIONS%” == “” set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" “-Xmx512m” “-XX:MaxPermSize=256m”.

启动成功截图:
kettle使用详解(一)此处介绍一下,kettle实现数据库数据抽取是分为job和transform来实现的。一个作业就相当于一个调度,作业可以设置定时启动等,来统一管理转换。转换就是来具体实现自己的数据抽取业务的任务。一般来说是自己写多个实现自己业务的转换,然后用作业来分类别分组的执行写好的转换,达到数据抽取的目的。

自此kettle配置启动完毕!

创建一个简单的转换

首先介绍一下转换的工作流程,转换的流程是kettle从一个DB连接中的某个数据库中抽取出数据,经过加工后,按照指定的规则插入到另一个指定的数据库中,可以是同一个连接也可以是不同的连接。

启动成功后点击 文件>新建>转换,新建一个转换。
kettle使用详解(一)
首先新建数据库连接,便于后面选择数据库。文件>新建>数据库连接,新建一个数据库连接。这里以mysql为例。

kettle使用详解(一)点击测试,报错,注意看报错信息为找不到mysql驱动包
kettle使用详解(一)下载mysql驱动包mysql-connector-java-5.1.38.jar放到kettle的lib库中重启kettle,问题解决。类似的如果你做的业务需要从不同的数据库抽取数据,例如orcale,sqlserver等需要自己增加相应的驱动包到lib库中。
kettle使用详解(一)
在测试数据库中新建两个表user和user1,在转换中插入两个控件,一个表输入,一个插入更新。双击表输入编辑输入数据sql
kettle使用详解(一)kettle使用详解(一)
保存转换,并执行,抽取成功,但是中文乱码。
kettle使用详解(一)解决办法为设置数据库连接的参数,为gbk
在数据库连接这里增加一个option配置项: characterEncoding 为 gbk
kettle使用详解(一)kettle使用详解(一)
至此转换完成,在之后的文章中,会继续介绍如何将转换分组使用job调用,以及集成到项目中,使用java调用kettle的job和转换。还有在项目中使用的设计模式。