目前了解的kettle一行一行执行的方法有两种现在这里做个总结
后面的一个问号就是表示它需要接受一个参数,你在这个表输出下面需要指定replace variable in script 选项和execute for eachrow 为选中状态,这样,Kettle就会循环执行这个sql , 执行的次数为前面参数步骤传入的数据集的大小。这样的好处是循环执行sql,但是数据库连接不断开。
第二种
其中主job的下面两个变量地方要注意
要每一次执行的行的转换里面的变量也要加上
以上两种方法第一种是减少对数据库连接的次数,资源消耗的比较少,如果对第二个表输入的数据库表加上索引的话,会大大提高数据抽取效率。第二种方法适合比较复杂的抽取,输入的数据行数比较少,第二个转换输出数据每一行里面比较复杂的数据处理。第二种方法的转换还可以换成job,但是无论是转换还是job都会在没传入一行参数的时候启动要被执行的转换或者job比较浪费资源。
以上两个附件分别对应网址http://download.youkuaiyun.com/detail/why_00/8770797
http://download.youkuaiyun.com/detail/why_00/8770805
本文总结了Kettle执行SQL语句时两种一行一行处理数据的方法。第一种利用表输出步骤的replace variable in script选项和execute for each row设置,循环执行SQL,减少数据库连接次数。第二种方法适用于复杂处理,每次处理一行数据,但资源消耗较高。两种方法各有适用场景,附件提供了详细示例。
1540

被折叠的 条评论
为什么被折叠?



