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

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

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

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

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

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

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

配置完毕后,点击Spoon.bat

打开后耐心等待一会儿。

三、创建数据库的连接

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

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

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

这是由于没有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这个驱动包。可以看到测试连接成功。

点击确认

四、同步数据

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

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

然后点击获取sql查询语句

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

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

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

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

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

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

最终发现5.1.47完美解决问题

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

执行完sql 会如下图

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

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

表输出的设置:

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

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

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

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

运行结果(user_copy 表数据):

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

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

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

操作步骤如下:

点击核心对象,新建转化

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

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

然后点击插入/更新

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

然后来看看test表中的数据

然后双击插入/更新

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

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

点击启动,并进行保存

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

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

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

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

点击通用

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

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

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

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

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

现在运行这个作业

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

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

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

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

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

总结

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

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

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

点赞
收藏

评论区

加载中...

相关推荐

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

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )