初学者kettle使⽤的总结
本⼈初学者,对于kettle了解的⾮常少,就最近遇到的问题进⾏⼀个⼩的增量式总结,如有错误请批评指正!
1)双击⼀个转换中可以设置"杂项"中选中“使⽤唯⼀连接”,表⽰该转换和数据库是⼀个session,有多个分⽀的话,执⾏失败数据就会回
滚
2)在⼀个job中可以有多个转换,但不是同⼀个session
3)"BD连接"中可以共享数据库配置
4)将相同的ktr复制2份,想⼀份数据库连接使⽤固定的,另外⼀份使⽤${...}的,要先创建⼀个带$的数据库连接,把之前本地共享的数据
库关闭共享,不然在修改任意⼀份ktr之后另外⼀份的数据库连接也会被修改。(没搞懂是怎么回事)
5)遇到“只有⼀个输⼊记录期待设置变量并且⾄少已经收到2个变量.”的问题,这个问题是我在表输⼊的时候给sq⼀次l传⼊了多个值(相
当于多条记录的id值),然后在更新完表之后⼜设置了“设置变量”,这时候由于⼀次查出多条记录,“设置变量”⾥不知道到底去取这些
记录的哪条⾥的信息,所以会报这个错。最后只好取消采⽤“设置变量”的传值的⽅式,采⽤“表输⼊”替代,虽然有点⿇烦,但是还没有
想到其他的解决办法。
6)在写kettle脚本的时候遇到最多的问题就是类型转换问题,如:
"java.sql.Timestamp cannot be cast to java.lang.Long“,这是⽇期字段不为空没问题,但是有值就会报这个转换问题;
或者Unexpected conversion error while converting value [N_YSFJFJ Integer(9)] to an Integerjava.math.BigDecimal cannot be cast to
这类的问题让⼈头疼不已。后来发现这类问题都是在要“更新/插⼊”之前使⽤了多个”表输⼊“来传值,貌似在传值的时候都将字段对应
的值默认转为integer类型的,所以要解决这类转换问题,要么在“更新/插⼊”的前⼀个步骤添加js控件来强制转换所有可能出现问题的字
bigdecimal转换为integer段,要么在”表输⼊“中的sql语句中使⽤case when 或者convert。
7)今天遇到⼀个问题是:⼀个转换对⼀个表进⾏插⼊操作,第⼀次查询然后插⼊数据,但是有些字段需要特殊处理下,也就是要先插⼊主要的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论