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. 配置HP LaserJet M1536dnf MFP打印机通过TCPIP共享多台计算机

    HP LaserJet M1536dnf MFP打印机通过TCPIP共享多台计算机配置配置过程:1.确保网线插入到打印机后,点设置按钮,到网络配置中查看IP地址,确保与主机或者路由器的IP地址一致,设 ...

  2. C#总结项目《影院售票系统》编写总结完结篇

    回顾:昨天总结了影院售票系统核心部分-售票,整个项目也就完成了2/3了,需求中也要求了对销售信息的保存,今天就继续总结销售信息的保存以及加载销售信息. 分析:退出程序时将已售出票集合中的对象循环写入到 ...

  3. Html.RenderPartial与Html.RenderAction区别(转)

    Html.RenderPartial与Html.RenderAction这两个方法都是用来在界面上嵌入用户控件的. Html.RenderPartial是直接将用户控件嵌入到界面上: <%Htm ...

  4. javascript基础之javascript的存在形式和js代码块在页面中的存放位置

    1.存在形式 文件 如: <script src='js/jc.js'></script> 前页面 <script type='text/javascript'>a ...

  5. div中英文无法自动换行的解决办法

    在一个设定好宽度的div中,当我们输入的中文文字长度超过了设定宽度时,会自动换到下一行.   但是,如果输入的是英文字母,那么,无论你div设定宽度为多少,英文字母都是不换行直接在同一行输出,导致di ...

  6. java JNI 的实现(2)-java和C/C++的相互调用.

    目录 概述 一,java代码 二,稍微注意通过javah生成的'C/C++'.h头文件和源java代码的关系 三,在C/C++中实现java的native方法(完整C/C++) 1,修改age,即Ja ...

  7. Hadoop参数优化

    dfs.block.size 决定HDFS文件block数量的多少(文件个数),它会间接的影响Job Tracker的调度和内存的占用(更影响内存的使用), mapred.map.tasks.spec ...

  8. PHP Libxml

    PHP Libxml 函数 PHP:指示支持该函数的最早的 PHP 版本. 函数 描述 PHP libxml_clear_errors() 清空 Libxml 错误缓冲. 5 libxml_get_e ...

  9. (三)Knockout - ViewModel 的使用2 - select、list 应用

    select下拉菜单 <select>常用的data-bind参数: •options : 指向数组或ko.observableArray(),KO会将数组元素转换为下拉选项.如果是ko. ...

  10. telnet简单操作 模拟请求

    telnet简单操作   模拟请求 一: 二: 三: 按照以上操作即可!