前言:

时间真快,转眼一年又从我们身边溜走了,从今天开始决定每天只讲一个知识点,将对应知识仔细解剖了,这样形成小颗粒的蛋白质,便于消费吸收,也便于自己的提高,一个东西你以为他懂,也只有你写出来,别人看懂了才是真的懂了。好了,废话不多说,上课。

一、什么是插入更新

插入更新的主要作用就是根据条件来检索数据,如果说相同更新记录,不相同增加记录。此时不懂的小明就会问了,里面的条件是指啥?是where条件嘛?插入更新里面的条件一般指需要更新或者插入的数据与现有表中数据的对比值,一般就是我们俗称的主键,这里面的主键分别单个主键和联合主键,但是不管是单个主键还是唯一主键,都必须满意一个原则,就是唯一性

1、插入更新案例解析

如下图所示,我们将抽取过来的CSV文件的数据,插入更新至我们的表里面,前面我们提到CSV文件的数据,是保持至类似EXCEl的文件中,用户随时会手动删除,也会因为行数的限制,必须删除不需要的历史数据,因此我们不能采用全量更新来更新数据,因此我们需要通过插入更新来更新数据,但是我们从CSV文件里面的数据来看,没有唯一性的字段,因此此时我们需要通过多个字段组合来获取唯一性的值,如通过日期+样品名称+记录编号来保持了数据的唯一性。

kettle换mysql驱动版本后怎么重启驱动_字段

2、在使用插入更新的时候我们需要注意什么

如图所示插入更新包括两个部分,一个部分是“用来查询的关键字”,另外一部分是更新字段。 第一部分我在前面已经详细说明了,需要注意的是第二部分,里面有个更新字段里面有Y和N的选择值,默认是Y。我们不要随便去把字段的更新Y改成N,因为改成N后,就不会进行更新操作,直接变成了插入了。

kettle换mysql驱动版本后怎么重启驱动_字段_02

二、扩展

当我们数据量很大,或者目标表的数据超过1千万时,此时不建议采用插入更新来更新数据,因为此时的转换要比较的数据太多导致插入更新的运行时间会很长。我们可以将插入更新的操作拆为先删除需要更新的数据,再插入需新增的数据,如需插入更新一天的数据,我们先删除一天的数据,再插入一天的数据,也可以达到插入更新的效果,且效率更高哦,详情可参考我Day3的文章。