热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

kettlespoon判断增量更新_开源ETL工具kettle系列之增量更新设计技巧

ETL中增量更新是一个比较依赖与工具和设计方法的过程,Kettle中主要提供InsertUpdate步骤,Delete步骤和DatabaseLookup

ETL

中增量更新是一个比较依赖与工具和设计方法的过程,

Kettle

中主要提

Insert

/

Update

步骤,

Delete

步骤和

Database

Lookup

步骤来支持增量更

新,

增量更新的设计方法也是根据应用场景来选取的,

虽然本文讨论的是

Kettle

的实现方式,

但也许对其他工具也有一些帮助。

本文不可能涵盖所有的情况,

迎大家讨论。

应用场景

增量更新按照数据种类的不同大概可以分成:

1.

只增加,不更新,

2.

只更新,不增加

3.

即增加也更新

4.

有删除,有增加,有更新

其中

1

,

2

,

3

种大概都是相同的思路,使用的步骤可能略有不同,通用的方法

是在原数据库增加一个时间戳,

然后在转换之后的对应表保留这个时间戳,

然后

每次抽取数据的时候,

先读取这个目标数据库表的时间戳的最大值,

把这个值当

作参数传给原数据库的相应表,

根据这个时间戳来做限定条件来抽取数据,

抽取

之后同样要保留这个时间戳,并且原数据库的时间戳一定是指定默认值为

sysdate

当前时间(以原数据库的时间为标准),抽取之后的目标数据库的时间

戳要保留原来的时间戳,而不是抽取时候的时间。

对于第一种情况,可以使用

Kettle

Insert / Update

步骤,只是可以勾

Don

t

perform

any

update

选项,

这个选项可以告诉

Kettle

你只会执行

Insert

步骤。

对于第二种情况可能比较用在数据出现错误然后原数据库有一些更新,

相应的目

标数据库也要更新,

这时可能不是更新所有的数据,

而是有一些限定条件的数据,

你可以使用

Kettle

Update

步骤来只执行更新。关于如何动态的执行限定条

件,可以参考前一篇文章。

第三种情况是最为常见的一种情况,使用的同样是

Kettle

Insert / Update

步骤,只是不要勾选

Don

t perform any update

选项。

第四种情况有些复杂,后面专门讨论。

对于第

1

,

2

,

3

种情况,可以参考下面的例子。

这个例子假设原数据库表为

customers

,

含有一个

id

,

firstname

,

lastname

,

age

字段,主键为

id

,

然后还加上一个默认值为

sysdate

的时间戳字段。转换



推荐阅读
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • Oracle10g备份导入的方法及注意事项
    本文介绍了使用Oracle10g进行备份导入的方法及相关注意事项,同时还介绍了2019年独角兽企业重金招聘Python工程师的标准。内容包括导出exp命令、删用户、创建数据库、授权等操作,以及导入imp命令的使用。详细介绍了导入时的参数设置,如full、ignore、buffer、commit、feedback等。转载来源于https://my.oschina.net/u/1767754/blog/377593。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • 本文介绍了将mysql从5.6.15升级到5.7.15的详细步骤,包括关闭访问、备份旧库、备份权限、配置文件备份、关闭旧数据库、安装二进制、替换配置文件以及启动新数据库等操作。 ... [详细]
  • MongoDB用户验证auth的权限设置及角色说明
    本文介绍了MongoDB用户验证auth的权限设置,包括readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase、cluster相关的权限以及root权限等角色的说明和使用方法。 ... [详细]
  • 我们有(据我所知)星型模式SQL数据库中的数据文件。该数据库有5个不同的文件,扩展名为 ... [详细]
author-avatar
美美2012的小幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有