热门标签 | 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 Server 的基本概念和操作,涵盖系统数据库、常用数据类型、表的创建及增删改查等基础操作。通过实例帮助读者快速上手 SQL Server 数据库管理。 ... [详细]
  • MySQL 基础操作与优化
    本文详细介绍了 MySQL 的基础连接、数据库及表的操作,涵盖创建、修改、删除等常用命令,并深入解析了数据类型、列属性、索引、外键和存储引擎等内容。 ... [详细]
  • 本文档介绍了如何在Visual Studio 2010环境下,利用C#语言连接SQL Server 2008数据库,并实现基本的数据操作,如增删改查等功能。通过构建一个面向对象的数据库工具类,简化了数据库操作流程。 ... [详细]
  • 查找最小值的操作是很简单的,只需要从根节点递归的遍历到左子树节点即可。当遍历到节点的左孩子为NULL时,则这个节点就是树的最小值。上面的树中,从根节点20开始,递归遍历左子 ... [详细]
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 目录一、salt-job管理#job存放数据目录#缓存时间设置#Others二、returns模块配置job数据入库#配置returns返回值信息#mysql安全设置#创建模块相关 ... [详细]
  • 本文详细介绍了优化DB2数据库性能的多种方法,涵盖统计信息更新、缓冲池调整、日志缓冲区配置、应用程序堆大小设置、排序堆参数调整、代理程序管理、锁机制优化、活动应用程序限制、页清除程序配置、I/O服务器数量设定以及编入组提交数调整等方面。通过这些技术手段,可以显著提升数据库的运行效率和响应速度。 ... [详细]
  • 本文介绍如何使用MFC和ADO技术调用SQL Server中的存储过程,以查询指定小区在特定时间段内的通话统计数据。通过用户界面选择小区ID、开始时间和结束时间,系统将计算并展示小时级的通话量、拥塞率及半速率通话比例。 ... [详细]
  • 云函数与数据库API实现增删查改的对比
    本文将深入探讨使用云函数和数据库API实现数据操作(增删查改)的不同方法,通过详细的代码示例帮助读者更好地理解和掌握这些技术。文章不仅提供代码实现,还解释了每种方法的特点和适用场景。 ... [详细]
  • 本文深入探讨了 Oracle 数据库的网络配置,包括全局数据库名、实例名等关键参数的设置与作用,旨在为数据库管理员和开发人员提供全面的参考。 ... [详细]
  • 主调|大侠_重温C++ ... [详细]
  • MongoDB的核心特性与架构解析
    本文深入探讨了MongoDB的核心特性,包括其强大的查询语言、灵活的文档模型以及高效的索引机制。此外,还详细介绍了MongoDB的体系结构,解释了其文档、集合和数据库的层次关系,并对比了MongoDB与传统关系型数据库(如MySQL)的逻辑结构。 ... [详细]
  • 在尝试从数据库获取设置的过程中,遇到了一个致命错误:Fatal error: Call to a member function bind_param() on boolean。本文将详细分析该错误的原因,并提供解决方案。 ... [详细]
  • 本文详细介绍了如何在Linux系统中创建和管理DB2数据库,包括用户切换、数据库创建、错误处理、连接与断开、表空间和缓冲池的创建,以及用户权限管理和数据导入导出等操作。 ... [详细]
  • 开发笔记:由数据库某字段存数组引发的json_encode/serialize思考
    开发笔记:由数据库某字段存数组引发的json_encode/serialize思考 ... [详细]
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社区 版权所有