Pentaho的下载与安装及其简单实用

Wesley13
• 阅读 722

一、首先去官网,因为是纯英文的。所以将其进行了翻译。

https://community.hitachivantara.com/s/article/data-integration-kettle

点击以下画红色框的线,对其进行下载。

Pentaho的下载与安装及其简单实用

下载完毕后,将其进行解压

Pentaho的下载与安装及其简单实用

Pentaho的下载与安装及其简单实用

Kettle是纯JAVA编程的开源软件,本地环境配置JDK1.7以上即可运行,解压后直接使用无需安装。

二、在环境变量中配置pentaho_java_home变量。值就是本地的jdk路径

Pentaho的下载与安装及其简单实用

配置完毕后,点击Spoon.bat

Pentaho的下载与安装及其简单实用

打开后耐心等待一会儿。

三、创建数据库的连接

Pentaho的下载与安装及其简单实用

点击转换,切换主对象树。可以看到DB连接。点击DB连接。

Pentaho的下载与安装及其简单实用

选择mysql的连接。输入相关的连接信息。

Pentaho的下载与安装及其简单实用

然后点击测试,出现以下的错误。

Pentaho的下载与安装及其简单实用

这是由于没有mysql的驱动包所导致的。所以要在pdi-ce-8.3.0.0-371\data-integration\lib下放入mysql的驱动包。找到对应的mysql版本的驱动包,如下载版本过低的驱动包会出现。Unknown system variable 'query_cache_size'这个错误,从而连接不到数据库。

我这下载的是mysql-connector-java-5.1.8.jar这个驱动包。可以看到测试连接成功。

Pentaho的下载与安装及其简单实用

点击确认

Pentaho的下载与安装及其简单实用

四、同步数据

新建一个转换,从输入输出里面各拖出来一个输入和输出。

Pentaho的下载与安装及其简单实用

在表输入里面选择数据连接,或者新建连接

Pentaho的下载与安装及其简单实用

然后点击获取sql查询语句

Pentaho的下载与安装及其简单实用

选择你要输入的表-点击确定

Pentaho的下载与安装及其简单实用

一旦点击是就会报出以下错误。

Pentaho的下载与安装及其简单实用

猜测是mysql数据库版本与mysql连接驱动(mysql-connector-java)版本冲突导致。

当前环境如下:
执行:select version();

Pentaho的下载与安装及其简单实用

mysql-connector-java版本为****5.1.8

尝试了不同版本的连接驱动:

Pentaho的下载与安装及其简单实用

最终发现5.1.47完美解决问题

Pentaho的下载与安装及其简单实用

解释:
jdbc在连接数据库时候会发送测试语句SET OPTION SQL_SELECT_LIMIT=DEFAULT,而mysql 5.6及以上版本已经不支持此语句。

Pentaho的下载与安装及其简单实用

执行完sql 会如下图

Pentaho的下载与安装及其简单实用

将A表中的字段插入到B表中

表输出,就是单纯地将数据输出到另一个表。

表输出的设置:

Pentaho的下载与安装及其简单实用

运行结果(user_copy 表数据):将A表数据复制到B表中

Pentaho的下载与安装及其简单实用

我们第二次运行后,kettle 就会报错,说主键已经存在

这就表示表输出只能输出一次,如果目标表中已经存在相应的主键,则不会进行更新,会报错。

如果我们修改下表输出的设置,我们来指定下输出字段:

Pentaho的下载与安装及其简单实用

运行结果(user_copy 表数据):

Pentaho的下载与安装及其简单实用

https://blog.csdn.net/qqfo24/article/details/82190535

https://blog.csdn.net/qqfo24/article/details/82190535

可以参考这个网址对把一个表的数据更新或者新增到新的一个表中。

操作步骤如下:

点击核心对象,新建转化

Pentaho的下载与安装及其简单实用

然后再点击主对象树,选择DB进行连接

Pentaho的下载与安装及其简单实用

点击完后,点击核心对象。选择输入。点击表输入。

Pentaho的下载与安装及其简单实用

Pentaho的下载与安装及其简单实用

然后点击插入/更新

Pentaho的下载与安装及其简单实用

现在我们来看看User表中的数据

Pentaho的下载与安装及其简单实用

然后来看看test表中的数据

Pentaho的下载与安装及其简单实用

然后双击插入/更新

Pentaho的下载与安装及其简单实用

这个图只是一些说明,下图是我自己操作图。

Pentaho的下载与安装及其简单实用

点击确定。然后运行这个转换

Pentaho的下载与安装及其简单实用

点击启动,并进行保存

Pentaho的下载与安装及其简单实用

运行结束后,我们可以在下方看到运行结果,其中有日志,数据预览等,我们可以看到一共读取了多少条数据,插入更新了多少数据等等。

Pentaho的下载与安装及其简单实用

这样就完成了一个最简单的转换,从一个表取数据,插入更新到另一个表。

现在我们来看test表,就可以看到id为4的数据由订单,更新成方法了

Pentaho的下载与安装及其简单实用

如果想要定时运行这个转换,那么就要用到作业。

Pentaho的下载与安装及其简单实用

点击通用

Pentaho的下载与安装及其简单实用

从左侧依次拖动 START 、转换、成功到右侧,并用线连接起来。

Pentaho的下载与安装及其简单实用

双击 START,可以配置作业的运行间隔,这边配置了每小时运行一次。

Pentaho的下载与安装及其简单实用

双击转换,选择之前新建的那个转换

Pentaho的下载与安装及其简单实用

点击运行,就能运行这次作业,点击停止就能停止。在下方执行结果,可以看到运行的日志。

Pentaho的下载与安装及其简单实用

我在user表中新增一条id为1的数据

Pentaho的下载与安装及其简单实用

现在运行这个作业

Pentaho的下载与安装及其简单实用

后来发现一个小时太久了,我又设置成3分钟。运行结果

Pentaho的下载与安装及其简单实用

现在我们来看看数据库中test中是否有问问的那条数据

Pentaho的下载与安装及其简单实用

以上截图说明了定时脚本插入成功。

想要定时任务重复操作,勾选重复这项

Pentaho的下载与安装及其简单实用

想要一致运行这个脚本就不需要停止。如果不想跑这个脚本就点击停止的按钮。

总结

插入更新由于可以更新数据,用的比较多。

表输出,容易插入重复数据,请慎用。

定时作业,开启可以自动的更新数据,减少人工操作的成本。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
3年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这