ETL过程的第一步就是从不同的数据源抽取数据并把数据存储在数据的缓存区。这个过程的主要挑战就是初始加载数据量大和比较慢的网络延迟。在初始加载完成之后,不能再把所有数据重新加载一遍,我们需要的只是变化的数据。识别出变化的数据,并抽取这些变化的数据称为变化数据捕获(Change Data Capture) 或CDC。

Kettle之基于时间戳的CDC实现实例

实现思路:

首先表中要有数据更新的时间戳如:最后一次修改的时间(XGSJ),如果有创建时间的话更好;

作为例子假设有一张表名字为customer,表中有记录时间戳的字段CJSJ(创建时间)和XGSJ(修改时间);

然后基于时间戳的表CDC_TIME,表中有两个字段一个是LAST_LOAD时间戳,记录最后一次加载的时间戳,另一个字段是CURRENT_LOAD记录当前加载的时间戳(表中首先插入一条很早以前的时间),在加载开始的时候,首先将CURRENT_LOAD设置为当前时间;

最后在加载结束之后将CURRENT_LOAD的时间更新到LAST_LOAD字段上。

创建时间戳的表

CREATE TABLE [CDC_TIME] (
[LAST_LOAD] datetime NULL , ---最后一次加载的时间
[CURRENT_LOAD] datetime NULL ----当前加载的时间
);
----插入默认值
INSERT INTO CDC_TIME VALUES('1971-01-01 00:00:01','1971-01-01 00:00:01');

实现DEMO:该实例主要实现的点有

1、设置JOB级别的变量;

2、CDC动态抽取数据;

3、单列拆分多行记录;

JOB: CDC_ZFJL

TRAN:INIT_CDC_TIME

TRAN:CDC_ZFJL_DATA

TRAN:CDC_ZFSJ_END

!由于这个涉及到具体项目的使用:该实例完成的是实时捕获数据到结果表,由于中间涉及到一个数据的处理步骤,所以看上去比较繁琐了。大家只要明白这个数据抽取的原理就可以了。

ELT工具Kettle之CDC(Change Data Capture)实现实例的更多相关文章

  1. SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑

    SQL Server 2008中的CDC(Change Data Capture)功能使用及释疑 关键词:CDC   原文:http://www.cnblogs.com/chenxizhang/arc ...

  2. Oracle CDC (Change Data Capture)更新数据捕获——概述

    Change Data Capture能高效识别并捕获数据的插入.修改和删除,使更新数据供个人或应用使用. CDC从oracle 9i开始引入,//TODO 在11G R2之后的版本里将取消支持,被O ...

  3. Oracle CDC (Change Data Capture)更新数据捕获——Asynchronous HotLog Mode(附带简单的kettle任务实现数据同步)

    Performing Asynchronous HotLog Publishing Step 1   Source Database DBA: Set the database initializat ...

  4. SQL Server审计功能入门:CDC(Change Data Capture)

    原文:SQL Server审计功能入门:CDC(Change Data Capture) 介绍 SQL Server 2008引入了CDC(Change Data Capture),它能记录: 1. ...

  5. SSIS CDC(Change Data Capture)组件在数据库中启用报错。 The error returned was 14234: 'The specified '@server' is invalid

    昨天实验CDC,在数据库中执行以下语句的时候出错. EXEC sys.sp_cdc_enable_table @source_schema = N'stg', @source_name = N'CDC ...

  6. 使用 empApi 组件实现 Change Data Capture 功能

    Change Data Capture 功能是从 Winter '19 版本开始正式启用的功能. 它是基于"发布-订阅"模式设计,可以将 Salesforce 中记录的改变自动推送 ...

  7. salesforce零基础学习(一百零五)Change Data Capture

    本篇参考: https://developer.salesforce.com/docs/atlas.en-us.232.0.api_streaming.meta/api_streaming/using ...

  8. SqlServer Change Data Capture(CDC)数据变更捕获

    最近在使用SqlServer2008r2数据库做系统的时候,在某些重要的.经常涉及到修改的表上,想加上一些恢复机制,一开始想找找看看有没有类似Oracle数据库闪回那样的功能,后来发现CDC的功能可以 ...

  9. 开源ETL工具kettle系列之常见问题

    开源ETL工具kettle系列之常见问题 摘要:本文主要介绍使用kettle设计一些ETL任务时一些常见问题,这些问题大部分都不在官方FAQ上,你可以在kettle的论坛上找到一些问题的答案 1. J ...

随机推荐

  1. struts2,hibernate,spring整合笔记(4)--struts与spring的整合

    饭要一口一口吃,程序也要一步一步写, 很多看起来很复杂的东西最初都是很简单的 下面要整合struts和spring spring就是我们的管家,原来我们费事费神的问题统统扔给她就好了 先写一个测试方法 ...

  2. SQL 使用Cursor(游标)遍历结果集

    使用Cursor(游标)可以在存储过程中遍历select 结果集,对其进行相关的操作. Cursor(游标)语法格式 DECLARE 游标名称 CURSOR FOR SELECT 字段1,字段2,字段 ...

  3. 《AngularJS》--指令的相互调用

    转载自http://blog.csdn.net/zhoukun1008/article/details/51296692 人们喜欢AngularJS,因为他很有特色,其中他的指令和双向数据绑定很吸引着 ...

  4. bootsrtap (-)

    1.text-muted:提示,使用浅灰色(#999).text-primary:主要,使用蓝色(#428bca).text-success:成功,使用浅绿色(#3c763d).text-info:通 ...

  5. POJ2449

    #include<stdio.h> #include<iostream> #include<queue> #include<vector> using ...

  6. DIV布局之道二:DIV块的嵌套,DIV盒子模型

    本文讲解DIV块布局的第二种使用方式:嵌套.“DIV嵌套”在有些文献中也被称为“盒子模型”,说的通俗一点就是嵌套(一个大的DIV块内部又包含一个或多个DIV块). 请看如下代码: CSS部分: CSS ...

  7. JS 实现 Tab标签切换功能

    Tab标签切换 效果图: HTML部分: <div class="wrap">     <ul id="tag">       < ...

  8. 我对Backbone中url属性的理解

    Model中有一个url属性,而且有一个urlRoot属性. Collection中也有一个url属性. // 这是Model中的url方法 url: function() { var base = ...

  9. C# 导出word文档及批量导出word文档(1)

         这里用到了两个dll,一个是aspose.word.dll,另外一个是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用于批量 ...

  10. 武汉科技大学ACM :1003: 零起点学算法78——牛牛

    Problem Description 牛牛是一种纸牌游戏,总共5张牌,规则如下: 如果找不到3张牌的点数之和是10的倍数,则为没牛: 如果其中3张牌的点数之和是10的倍数,则为有牛,剩下两张牌的点数 ...