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. 配置Android开发环境

    1.下载JAVASE http://www.oracle.com/technetwork/java/javase/downloads/index.html 根据自己系统选择JAVASE版本 2.下载A ...

  2. sass笔记-3|Sass基础语法之样式复用和保持简洁

    上一篇详述了Sass如何嵌套.导入和注释这3个基本方式来保持条理性和可读性,这一篇更进一步地阐述sass保持样式复用和简洁的方式--混合器和选择器继承--这两种方式都能复用样式,使用它们也不难,但一定 ...

  3. 检查主机是否存活的shell脚本

    #!/bin/bash PREFIX= num= " ]; do echo -en "Pinging ${PREFIX}.${num}..." >& &qu ...

  4. thinkphp3.2.3 成功对接支付宝接口

    一.首先下载支付宝官方接口,下载地址: https://b.alipay.com/order/productDetail.htm?productId=2012111200373124&tabI ...

  5. SIEBEL安装问题

    安装siebel 分三步走: 1.安装oracle 11g 2.安装Client 3.分别安装siebel tools.siebel web client,之后打上补丁 安装siebel tools. ...

  6. 9、第九节课jquery选择器jq2,20151007

    1.表单选择器 2.not 里面不能加其他标签 $div p:not(not:disable)  错误的 $div p:not(:disable)  正确的 3.选择设置相应属性的标签项 $(&quo ...

  7. nyoj 36

    //这一题是  nyoj 36  是一道求最长公共子序列的题,也是用dp做出来的 核心代码也就是一句,题目大概思路是先找到两组字符串里面相同的字母 在二维数组里面更新每次比较过后dp的值,空想很难理解 ...

  8. 刚接触js感觉好吃力啊

    我是一个新手,最近刚刚开始学习js这门语言,感觉好难,有一种无从下手的感觉,不知道应该从哪里学习,虽然也看了很多的书,但是对于一个没有计算机基础的人来说,真的是一种煎熬,每一个名词都要去查.万事开头难 ...

  9. 最近很火的携程Java 工程师的一道面向对象面试题

    最近这道面试题,传遍程序员各大小园地,本小白特摘抄整理与大家一起学习: 原题: package com.gxlee; public class Base { private String baseNa ...

  10. lucene实战(第二版)学习笔记

    初识Lucene 构建索引 为应用程序添加搜索功能 Lucene的分析过程