kettle 表输入 对结果集进行 *** 作

kettle 表输入 对结果集进行 *** 作,第1张

1 单数据源输入,直接用sql 做连接

2 多数据源输入,(可能是文本或是两个以上源数据库),用database join *** 作

3 三个表以上的多字段输出

2 Kettle的数据库连接模式

Kettle的数据库连接是一个步骤里面控制一个单数据库连接,所以kettle的连接有数据库连接池,你可以在指定的数据库连接里面指定一开始连接池里面放多少个数据库连接,在创建数据库连接的时候就有Pooling 选项卡,里面可以指定最大连接数和初始连接数,这可以一定程度上提高速度

最近在看行转列的内容,这边记录一下。

数据集如下:

最终的效果如下:

2、在进行行转列之前需要先按分组字段进行排序,这个在关闭控件时软件也会提示

可以发现空值字段也被连接,最后的效果还不是很理想,接下去要把多余的逗号去掉

5、字符串替换,删除头部和中间多余的逗号,这边用到了正则表达式

效果如下

步骤3:利用剪切字符串,删除末尾的逗号剪切字符串这个控件这边有点奇怪,起始位置设为-1,结束位置要设的很小(绝对值不小于该字段值的长度最大值)才能取到除最后一个字符的数据,设0和-1,会得到最后一个字符。。。

效果如下

最后效果如下

拖动表输入控件,绑定数据源连接你要查询的数据库

SQL语句

select frm table

此时你已经可以获取表中所有数据,根据你后续的需要,再去执行后续相关的 *** 作。

例如过滤就用过滤控件,同步就用表输出控件插入另一张表(甚至可以不同数据源)

在kettle常常有处理从一个源数据中做转换做转换的时候, 需要去查另一个数据库

这种问题遇到数据小时候还好办 但是数据魇 时候就麻烦来了

下面针对三种情况做具体情况的选择办法

1 当需要转换的数据特别大的时候, 例如: 10W条以上或者100W条以上时

上图中,hadoop数据导入,导入的数据如果够多,例如100W条以上,其中一个字段需要查询数据库中查询,而这个字段的类型并不多,例如只有10个类

型或者数据库中就只有这10个类型那么,可以走线路2, 并且线路2中的 "使用缓存"

可以打勾,也可以不打当然你这个源里的数据太多,打上当然最好了因为省得再去你的数据库里再查

但是当源里的数据类型还是只有10个类型,但是你的数据库里面存了有10000条记录时,怎么办

有两种解决办法:

1)线路2:并且查询节点中的 "使用缓存" 不能打勾

2)线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来这样在流里的比对时也很快很多必竟是在内存里做运算了

2 查另一个数据库的数据量大时,而你的源数据不大

最好的选择是

线路1,并在"带条件的结果查询供流查询使用" 这个结点中,用一个SQL,过滤一下数据,然后尽可能地把那里包括的这些记录查出来这样在流里的比对时也很快很多必竟是在内存里做运算了

3 当两个数据源都非常大时(最不想遇到的)

这种情况是最不想遇到的办法

一种选择:

1)线路2中的 "使用缓存" 打勾

以上就是关于kettle 表输入 对结果集进行 *** 作全部的内容,包括:kettle 表输入 对结果集进行 *** 作、kettle之行转列,删除多余连接符、怎样利用kettle去一次性读取表中所有的数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10167914.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存