
插入/更新
1你是否遇到了需要将mysql数据库中的所有表与数据迁移到Oracle。
2你是否还在使用kettle重复的画着:表输入-表输出、创建表,而烦恼。下面为你实现了一套通用的数据库迁移流程。技术引导:实现之初,在kettle提供的例子中找到了一个类似的(samples\jobs\processalltables)。通过相关改造,终于达到目标。实现过程解剖:整套流程分为:2个job,4个trans。使用到的Trans插件:表输入、字段选择、复制记录到结果、从结果获取记录、设置变量、自定义java脚本、表输出。1大job。2要迁移的源库表名称获取,并设置到结果集,为下面的job使用。
3配置子job为前面的每一条记录(即每个表)执行一次该子job4下面是子job。5获取记录中的表名称,并设置为到变量。6读取当前表的结果信息,并在目标库中创建表(这个是难点)。因为只需要获取抓取要抽取表的结构信息,故在sql后面加上where1=2。下面代码是创建目标库表。Java代码publicbooleanprocessRow(StepMetaInterfacesmi,StepDataInterfacesdi)throwsKettleException{//First,getarowfromthedefaultinputhop//Object[]r=getRow();orgpentahodicoredatabaseDatabaseMetadbmeta=null;javautilListlist=getTrans()getRepository()readDatabases();//3x中获取资源库的所有数据库连接信息用getDatabases();if(list!=null&&!listisEmpty()){for(inti=0;i
resultgetrows不是获取trans流程里面‘流动’的数据的。trans里面有个‘复制记录到结果’插件,输出到里面的数据,通过resultgetrows就能获取。java中获取结果集ResutSet的总条数,可以直接使用其提供的getRow方法来取得,实例如下:
在转换和作业中都有这个控件,叫写日志
看名字就知道,它是用来写日志的,平时用来调试或者记日志都可以使用,我一般用来看变量,或者一些内容输出。
日志控件,只有几个功能
可以配置日志级别、写日志、获取上游的字段
比如我们想看看上游到底输出的是什么内容,我们就可以输出看看
执行的时候,就会打印出上游的输出内容
这里不适用太多内容,简单输出几行就行了
接上面的例子,我们说,简单输出几行就行了,刚才我是直接在上游的SQL中加了限制,只返回3条记录,如果不控制的话,还可以在日志控件中进行设置
勾选下图的参数,就可以进行限制了
这个日志级别有点儿奇怪,感觉不能理解他的实际意义
它又很多个选项,按照常理来说,勾选那个“行级别日志”,会显示最相信的日志,但是,并没有什么用,或者是我理解错了,用的不对。
选了以后,连基本的输出内容都没有了,是不是很奇怪,
或者我理解的不太对
还有这个错误日志,勾选后,会把输出内容标红,即把日志控件输出的内容设置为错误信息,这个到可以理解,
使用日志控件,还可以输出变量信息,一般有这空标识的都是可以写变量的
我是测试下变量
执行后,就会输出变量的值
顺带说一下作业在执行的时候,也有日志级别,这个是可以控制的
如果选择行级别,的确会输出很多内容来,大家可以尝试下。
Kettle是一款国外开源的etl工具,纯java编写,绿色无需安装,主要用于数据抽娶转换、装载。kettle兼容了市面上几十种数据库,故用kettle来做数据库的迁移视乎是个不错的选择。 kettle的数据抽取主要在于抽取数据,而没有考虑数据库的函数
以上就是关于kettle怎么实现重复抽取更新数据全部的内容,包括:kettle怎么实现重复抽取更新数据、kettle java脚本怎么获取系统信息变量、Kettle手册-日志控件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)