大多数时候我们操作的都是关系型数据库,无论是从数据库中抽提还是往数据库中加载都离不开数据库的连接,本文以oracle数据库的操作为例,学习如何用kettle进行数据库操作。
因为数据库连接使用jdbc,对于其它类型数据库,比如sqlserver,informix、db2、mysql、postgre等都是相同的操作步骤,唯一不同的就是需要下载不同的JDBC需要的jar文件。
首先要做的就是去官网下载jdbc的jar文件,一般数据库在官网都能找到下载,以oracle为例:
打开https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html
下载ojdbc8.jar(JDK8)后放入到kettle的lib目录下,也可以在公众号发送ojdbc获取JDK8和JDK10的版本。
完成jar文件的配置之后,重启spoon.bat就可以进行数据库连接配置了,一般情况下在转化设置之前先将使用的数据库配置测试成功后再进行转换任务的设计。
点击菜单 文件->新建->新建数据库

配置后进行测试,根据报错情况自行问题解决,测试通过后,确认退出。

如果后续设计的任务连接数据库较多,建议使用连接池,确保连接的复用和减少对数据库连接的数量,避免考虑不周导致的数据库连接过多最终导致数据库侧的性能故障。
当然也可以通过集群配置,对多个数据库进行操作。
1、表查询控件
通过表查询控件可以通过sql语句获得数据作为数据源传递给其它输出控件,比如可以配置一个excel的输出控件,将数据导出到Excel中。



需要说明的是excel可以通过内容、格式、字段进行配置,实现一些特殊配置。
完成后保存为ktr后缀的文件,并选择命令按钮执行,如图所示:

如果没有报错,即可在指定位置获得生成的excel文件,如果配置有问题,执行会报错,可以在窗口底部的日志中进行查看并分析解决。
我们也可以选择某个执行步骤(选择转换控件),可以通过Preview data查看该步骤执行的数据结果,帮助分析转化步骤出现的问题。

我们也可以通过其它步骤完成数据输入,然后通过变量传值的方式进行SQL动态的执行。



最终就可以实现动态的sql执行,查询出name为dba_objects,type为view的数据。

2、表输入
通常我们会将处理好的数据最终插入到数据库中,这就需要表输入控件,我们用一个最简单的样例熟悉一下这个控件。我们生成10行固定字符串的记录,然后增加两个随机函数生成的列,最后增加一个序列,通过这些步骤生成4个字段。


记录配置:

生成随机数:

增加序列:

表输出配置:

可以进行流字段和输入字段的映射,如果字段命名按照数据库字段设置,即可忽略此步骤,另外从上一张图看到,也可以通过表名定义在一个字段里的设置,实现一个转化任务根据输入参数的不同,插入不同表的业务逻辑:

整个转换任务执行后,即可从数据库中查询到数据,如图:

3、其它数据库操作控件
正常情况下,我们从数据库维护的角度来看,一定免不了数据删除,数据更新的操作,上面只涉及到了插入,我们看看删除和更新如何使用控件。
删除控件是根据数据流中的字段匹配条件,然后进行删除,其实就类似于我们写delete语句的时候条件是根据其它字段实现的。
但对于这种删除应该是按照每一条数据流的参数设置进行删除操作的,因此较大数据量按照数据流设置的条件进行分批删除是一个不错的选择。

有了删除的控件使用经验,更新就比较简单了,可以通过查询关键字条件的设置完成数据的过滤,通过更新字段的设置配置更新数据流中的对应字段。

我们也可以使用数据同步控件,在高级中设置通过字段值来进行插入更新等配置,实现有值更新,没有值插入的操作。

1、值映射
自定义字典值进行映射,这个控件比较常用,可以将数据流中的某个字段的值进行固定的映射,也可以通过数据库中查询关联来实现该控件的功能

2、字符串操作
处理过程中有字符串的复杂处理,就可以使用这个控件,无论是字符串取空格,还是大小写转化,定长截取都轻松实现。

3、计算器
处理过程中也可以使用计算器进行数据计算,计算类型非常丰富。

4、其它控件
还可以使用“去除重复记录”、“字符串替换”、“拆分字段”、“行转列”、“列转行”等控件完成数据中间复杂的处理。
有了这些控件的组合,就可以完成复杂的数据库运维工作,如果您有特殊需求,可以留言交流。
其它文档阅读





