kettle开发篇-插入更新

简介: 笔记

image.png

前言:


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


一、什么是插入更新


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

1、插入更新案例解析

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

2.png

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

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

image.png


二、扩展


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


相关文章
|
数据库
kettle开发篇-合并记录
kettle开发篇-合并记录
1801 0
|
数据库
kettle开发篇-记录集连接
kettle开发篇-记录集连接
769 0
|
存储
kettle开发篇-行扁平化
kettle开发篇-行扁平化
462 0
kettle开发篇-空操作
kettle开发篇-空操作
535 0
|
数据库连接 数据库
kettle开发篇-数据库查询
kettle开发篇-数据库查询
924 0
|
数据采集 数据挖掘
kettle开发-数据清洗之字符串替换
kettle开发-数据清洗之字符串替换
1094 2
|
SQL 前端开发 JavaScript
kettle开发-超好用自定义数据处理组件
kettle开发-超好用自定义数据处理组件
1667 0
|
Java
ETL工具 Kettle 中 kettle循环传递变量_(最简单的方法)
本文详细介绍了如何在Kettle工具中使用循环传递变量,通过示例展示了如何将movies表数据按月插入到ods_movies表,涉及新建转换、获取变量、作业配置和执行,呈现了一个嵌套作业结构.
3231 3
|
Java 数据库
【YashanDB知识库】kettle同步大表提示java内存溢出
在数据导入导出场景中,使用Kettle进行大表数据同步时出现“ERROR:could not create the java virtual machine!”问题,原因为Java内存溢出。解决方法包括:1) 编辑Spoon.bat增大JVM堆内存至2GB;2) 优化Kettle转换流程,如调整批量大小、精简步骤;3) 合理设置并行线程数(PARALLELISM参数)。此问题影响所有版本,需根据实际需求调整相关参数以避免内存不足。