“输入输出”的版本间的差异

来自小能手俱乐部
跳到导航 跳到搜索
(创建页面,内容为“插入更新 插入更新,顾名思义,包括插入和更新两种情况。 我们需要先设置一个条件,符合条件时,进行更新操作;否则,…”)
 
 
(未显示同一用户的1个中间版本)
第1行: 第1行:
插入更新
常用输入输出包括插入更新和普通输出。
 
插入更新,顾名思义,包括插入和更新两种情况。
插入更新,顾名思义,包括插入和更新两种情况。


第8行: 第9行:
整体流程为:
整体流程为:


[[文件:6.png|无框|558x558像素]]




表输入的设置及预览:
表输入的设置及预览:


[[文件:屏幕截图 2021-08-31 170616.png|无框|637x637像素]]


传入更新的设置为:


插入更新的设置:
[[文件:屏幕截图 2021-08-31 171538.png|无框|672x672像素]]
 
 
 
运行结果(user_copy 表数据):
 
 
 
运行后,user 表的数据被同步到 user_copy 表中,并且不管运行多少次,数据始终是那么多。


这就是插入更新的特点,ID 一样时,只会进行更新,不会再次插入。
这就是插入更新的特点,ID 一样时,只会进行更新,不会再次插入。
第29行: 第25行:
表输出,就是单纯地将数据输出到另一个表。
表输出,就是单纯地将数据输出到另一个表。


我们来看这个例子。
再换成表输出:


整体流程为:
[[文件:屏幕截图 2021-08-31 171103.png|无框]]
 
 
 
表输入和上面的例子一致。


表输出的设置:
表输出的设置:


[[文件:屏幕截图 2021-08-31 171019.png|无框|562x562像素]]


运行后,user 表的数据被同步到 user_bak 表中,若选择裁剪表,则会在每次第一行入表时对表内容进行清空,请慎重选择,并且不管运行多少次,数据始终是那么多。


运行结果(user_copy 表数据):
====== 总结 ======
 
表输入不需要对数据进行查询就可插入,对于大批量数据增量或者全量新增较为适用,而插入更新由于需要对数据进行查询,所以对于大批量数据不是很友好,但是对于小量数据的更新维护较为便捷。
 
 
我们可以看到,运行结果和插入更新的一致。但是当我们第二次运行后,kettle 就会报错,说主键已经存在。
 
这就表示表输出只能输出一次,如果目标表中已经存在相应的主键,则不会进行更新,会报错。
 
如果我们修改下表输出的设置,我们来指定下输出字段:
 
 
 
运行结果(user_copy 表数据):
 
 
 
我们可以看到,运行后 ID 由数据库自动生成,并且可以运行多次不报错,数据库也会重复插入数据。
 
因此表输出只是单纯的输出操作。
 
执行 SQL 脚本
执行 SQL 脚本,就是可以自定义一条 SQL 来执行。
 
我们来看这个例子。
 
整体流程为:
 
 
 
表输入和上面的例子一致。
 
执行 SQL 脚本的设置:
 
 
 
运行结果(user_copy 表数据):
 
 
 
我们可以看到,每取出一条数据,就执行了一次 SQL ,将数据插入目标表。运行多次后,就会插入多次数据。
 
执行 SQL 脚本比较灵活,我们可以用来处理较为复杂的 SQL 。
 
总结
插入更新、表输出、执行 SQL 脚本是比较常见的输出方式。
 
插入更新由于可以更新数据,用的比较多。
 
表输出,容易插入重复数据,请慎用。


执行 SQL 脚本则比较灵活,比如我们可以用它来保存日志、错误信息等。
这两种方式都是当前任务配置中最常用到的入表模式,特此单独描述。

2021年9月3日 (五) 02:24的最新版本

常用输入输出包括插入更新和普通输出。

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

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

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

整体流程为:

生成缩略图出错:无法找到文件


表输入的设置及预览:

生成缩略图出错:无法找到文件

传入更新的设置为:

屏幕截图 2021-08-31 171538.png

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

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

再换成表输出:

生成缩略图出错:无法找到文件

表输出的设置:

生成缩略图出错:无法找到文件

运行后,user 表的数据被同步到 user_bak 表中,若选择裁剪表,则会在每次第一行入表时对表内容进行清空,请慎重选择,并且不管运行多少次,数据始终是那么多。

总结

表输入不需要对数据进行查询就可插入,对于大批量数据增量或者全量新增较为适用,而插入更新由于需要对数据进行查询,所以对于大批量数据不是很友好,但是对于小量数据的更新维护较为便捷。

这两种方式都是当前任务配置中最常用到的入表模式,特此单独描述。