联合查询/更新帮助文档

联合查询/更新步骤是将输入流中的行集数据与数据库中的数据通过关联字段查询出来后,再对“代理关键字”中的值进行相应更新,再输出至流中。步骤配置信息如图1所示。

  

 

                                                          图1 步骤配置信息

 

下文详细解释各控件的含义:

1.转换步骤名称:步骤的名称,在单一转换中,名称必须唯一。

2.数据库连接::读取数据的JDBC连接名称,右边第一个“编辑”可以对连接信息进行编辑;第二个“新建”按钮可以新建JDBC连接;第三个“向导”按钮可以根据指引分步去建立JDBC连接。

3.目标模式:输入行集数据的表Schema的名称。可以点击右边的“浏览”按钮,进行选择。

4.目标表:行集写入数据的表名,可以点击右边的“浏览”按钮,进行选择。

5.提交记录数量:批处理行集数量限制(注意必须填整数),设其值为n。如果n<0,那么更新后将不提交事务。如果n等于0,Kettle将自动把n设置为最大整数(值为2147483647);如果n>0,那么Kettle将判断是否可以采用批处理模式。如果可以,那么将采用JDBC批量处理的方式,每隔n行执行一次批处理、提交事务、清空批处理;如果不支持批处理,那么将逐行执行insert或update语句,并每隔n行提交一次事务。批处理模式性能更高,但需要多个条件同时满足:数据库支持批处理、不需要获取返回的主键字段值、没有在转换属性中激活使用唯一连接(转换/属性/杂项/使用唯一连接)。例如图1中设置为100,那么Kettle将在100行、200行、300行......时提交事务,到底提交多少次由输入行集行数决定。

6.缓存大小:设置缓存到内存中的行数。当读取的数据行数小于设置的数值时,则直接缓存在内存中,不会使用临时文件。当读取的数据行数大于设置的数值时,则会将数据存储在临时文件,此时如果没有设置临时文件则该步骤会报错。注:当输入的行数非常多,需要用临时文件来存储时,会根据此处设置的值来存储相应行数数据到单个临时文件。因此设置的值越大,创建并打开的临时文件就越少,该步骤就越快。

7.预加载缓存:勾选此项,将把数据加载进缓存后,进行查询。主要用于性能的优化。

8.关键字段(在表中查询记录):指定“维度字段”与“流里的字段”,指定后的字段将作为关联字段对数据进行查询(类似于数据库中,两张表的关联字段),再在第九控件中对查询后的数据进行更新。

1)维度字段:下拉选择“目标表”中的字段。

2)流里的字段:下拉选择流中的字段。

9.代理关键字:输入“目标表”中需要操作的字段,用“流中的字段”的值来匹配“维度字段”的值,没有匹配的值会根据“创建代理键”设置的条件进行更新。例如:“流里的字段”id中的5,在“维度字段”id_1中不存在,则会根据“创建代理键”中的条件对该条数据进行更新,如图2-3所示:

  

 

                                                          图2 插件配置信息

 

  

                                             图3 目标表、流中的字段配置信息

(1)使用表里的最大记录数+1:勾选此项,将在“代理关键字”中的最大值加1。

(2)使用序列:勾选此项,在右边方框中输入序列名称,并根据序列中的设置,输出“代理关键字”。注:序列在数据库中进行设置。

(3)使用自增字段:勾选此项,将使用数据库中设置的自增字段输出“代理关键字”。

10.移除查询字段?:在输入流中移出用于查询的字段。

11.使用哈希码?:勾选此项,将激活第12控件。

12.表中的哈希码(Hashcode)字段:输入目标表中存储hashcode的字段,将会把生成的哈希码存入此字段中。

13.记录最近更新日期的字段(可选):输入目标表中存入时间的字段,并将把最近一次数据更新时间存入该字段中。

 

文章原创首发于:https://ckettle.ccsaii.com.cn/help/StepPluginType/combinationlookup?s=csdn

更多CKettle内容,欢迎点击上述链接学习。