kettle 常用输出(插入更新、表输出、执行 SQL 脚本)

本文介绍了Kettle常用的输出方式,包括插入更新、表输出和执行SQL脚本。插入更新可根据条件更新或插入数据;表输出单纯将数据输出到另一表,易插入重复数据;执行SQL脚本较灵活,可处理复杂SQL。插入更新使用较多,表输出需慎用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇 文章 ,主要讲了 kettle 的原理、安装及简单的使用。其中用到了一种输出方式:插入更新。

这篇文章,主要介绍下常用的输出方式:插入更新、表输出、执行 SQL 脚本。

插入更新

插入更新,顾名思义,包括插入和更新两种情况。

我们需要先设置一个条件,符合条件时,进行更新操作;否则,进行插入操作。常见的条件就是判断表中的 ID 和流(上一个步骤的结果,可以理解为内存)中的 ID 是否相等,相等则更新;不等则插入。

我们再来回顾下上一篇文章中的例子。

整体流程为:

kettle_insert_update_input

表输入的设置及预览:

kettle_table_input_config

插入更新的设置:

kettle_insert_update_output_config

运行结果(user_copy 表数据):

kettle_insert_update_output_example

运行后,user 表的数据被同步到 user_copy 表中,并且不管运行多少次,数据始终是那么多。

这就是插入更新的特点,ID 一样时,只会进行更新,不会再次插入。

注:

  • 对于一个节点,可以右键点击 显示输入字段/显示输出字段来查看输入、输出字段信息

show_input_columns

show_input_columns_2

  • 源表和目标表字段不一致时,无法匹配上,需要手动编辑映射

insert_update_manual_match

表输出

表输出,就是单纯地将数据输出到另一个表。

我们来看这个例子。

整体流程为:

table_ouput_flow

表输入和上面的例子一致。

表输出的设置:

kettle_table_output_config

运行结果(user_copy 表数据)和插入更新的方式一致。但是当我们第二次运行后,kettle 就会报错,说主键已经存在。

这就表示表输出只能输出一次,如果目标表中已经存在相应的主键,则不会进行更新,会报错。

如果我们修改下表输出的设置,我们来指定下输出字段:

kettle_table_output_config_without_pk

运行结果(user_copy 表数据):

table_ouput_multiple_time

我们可以看到,运行后 ID 由数据库自动生成,并且可以运行多次不报错,数据库也会重复插入数据。

因此表输出只是单纯的输出操作。

执行 SQL 脚本

执行 SQL 脚本,就是可以自定义一条 SQL 来执行。

我们来看这个例子。

整体流程为:

output_with_sql_script

运行结果(user_copy 表数据):

sql_script_with_multiple_times

我们可以看到,每取出一条数据,就执行了一次 SQL ,将数据插入目标表。运行多次后,就会插入多次数据。

执行 SQL 脚本比较灵活,我们可以用来处理较为复杂的 SQL 。

总结

插入更新、表输出、执行 SQL 脚本是比较常见的输出方式。

插入更新由于可以更新数据,用的比较多。

表输出,容易插入重复数据,请慎用。

执行 SQL 脚本则比较灵活,比如我们可以用它来保存日志、错误信息等。

本文转自: https://blog.youkuaiyun.com/qqfo24/article/details/82215761

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值