ETL增量单表同步简述

1. 实现需求

当原数据库的表有新增、更新、删除操作时,将改动数据同步到目标库对应的数据表。

2. 设计思路

设计总体流程图如下:

步骤简单说明:

1、设置job的执行属性,如下图:

2、根据要同步的表名,更新同步配置表synConfig的endTime。

3、获取同步时间段并将beginTime和endTime设置到变量中。

4、获取beginTime>= and <endTime,根据比较原表和目标表数据的差异性,进行更新/插入数据到目标表。

5、根据比较原表和目标表数据的差异性,进行删除目标表的数据。一般通过id进行比较,故与4步骤分开处理。

6、更新提取的开始时间和结束时间,将上次提取的结束时间更新到开始时间。此步骤与4步骤配合。

3. 必备条件

1、目标数据库的表结构与原数据库相同;

2、同步的表要有syncTime字段,且数据类型和同步配置表synConfig的beginTime、endTime的数据类型相同。

3、当原表有新增、更新操作时要更新synTime字段。

4. 具体实现

4.1. 同步配置表设计

创建同步配置表synConfig,如图所示:

字段说明如下:

name:要同步的数据表名字。

beginTime:同步开始时间。

endTime:同步结束时间。

如下图表示数据表table3开始同步的时间为2017-05-11 14:20:51.473,结束时间为2017-05-11 14:20:53.520。

建表sql如下:

create table synConfig(

  name   nvarchar(64) not null,

  beginTime datetime,

  endTime datetime,

);

4.2. 软件安装

1、Jdk

2、Kettle同步工具

说明:

kettle7版本要求jdk必须为1.8以上。

详细可参考官网:http://community.pentaho.com/projects/data-integration/

ETL增量单表同步简述_根据dateTime增量的更多相关文章

  1. ETL增量单表同步简述_根据timestamp增量

    ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ...

  2. ETL全量单表同步简述

    ETL全量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 注意点: 1.数据库合并时,选择正确的数据源 ...

  3. Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)

    一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...

  4. ETL全量多表同步简述

    ETL全量多表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 1.获取同步表名如下图: 2.循环迁移数据如 ...

  5. mysql 主从单库单表同步 binlog-do-db replicate-do-db

    方案一:两边做主从. SELECT SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) FROM information_schema.tables WHERE TABLE_SCHE ...

  6. KETTLE单表同步,写入EXCEL和TXT

    以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 在平时工作当中,会遇到这种情况,而且很常见.比如:1.自动生成文件TXT或者EXCEL(电信行业该需求居多),上传至某服务器:2.双方数 ...

  7. SQLAlchemy(1):单表操作

    SQLAlchemy 是一个 ORM框架:类对应表,类中的字段对应表中的列,类的对象对应表的一条记录:作用:帮助我们使用类和对象快速实现数据库操作操作数据库的方式: 1. 原生SQL - pymysq ...

  8. kettle实现同构单表增量同步

    job如下: 如下转换:获取区服列表,将id列表保存到结果(内存) job: 同构数据库单表抽取(每个输入执行一次) 同构数据库单表抽取(job) 的具体实现如下: 转换:获取数据库连接ID 从结果获 ...

  9. CentOS6.4 配置mysql服务器启动多个端口,同步单表数据

    ============================================================ ====多端口启动==== ========================= ...

随机推荐

  1. git ---理论知识

    理论基础: 不要高估自己的智商,不要低估Git的能耐. 1.Git记录的 是什么? 记录每一次版本变动的内容 将每个版本独立保存 方便分支管理. 2.git的三棵树---工作区.暂存区域和Git仓库 ...

  2. php与其他一些相关工具的安装步骤分享

    现在很少花时间来专门写博客,都是把平时看到用到的东西像随笔一样记录在云笔记上. 在这儿分享一些php相关的技术安装过程: linux下编译安装php:php安装 phpunit安装过程:phpunit ...

  3. org.springframework.orm.hibernate4.support.OpenSessionInterceptor

    /* * Copyright 2002-2014 the original author or authors. * * Licensed under the Apache License, Vers ...

  4. 习水医院12C RAC 数据库安装文档

        环境介绍 OS: Oracle Enterprise Linux 6.4 (For RAC Nodes) DB: GI and Database 12.1.0.2 所需介质 p17694377 ...

  5. 使用 reduce 实现数组 map 方法

    //使用 reduce 实现数组 map 方法 const selfMap2 = function (fn, context){ let arr = Array.prototype.slice.cal ...

  6. 数据结构之线性顺序表ArrayList(Java实现)

    一.ListMe接口: import java.util.ArrayList; //实现线性表(顺序表和链表)的接口://提供add get isEmpty size 功能public interfa ...

  7. pip install MySQL-python error "can't open config-win.h"

    http://blog.csdn.net/xxm524/article/details/48754139

  8. HDU - 2612 Find a way(BFS搜索)

    题目: 链接 思路: 用BFS分别以‘Y’和‘M’的位置为起点进行两次搜索,并把这两次的搜索结果在一个二维数组中保存下来,在对地图遍历遇到‘@’更行最小值. PS: 如果用‘Y’和‘M’点分别去搜每个 ...

  9. librdkafka使用VS2015进行编译

    抄了那么久的<kafka权威指南>,开始实操了,按照书本的介绍,kafka本身提供针对Java的原生API,其它语言如果需要使用kafka,那么就需要通过第三方库来做了,对了再书中一直提及 ...

  10. 零基础入门学习Python(5)--闲聊之Python的数据类型

    前言 本次主要闲聊一下python的一些数值类型,整型(int),浮点型(float),布尔类型(bool),还有e记法(科学计数法),也是属于浮点型. 数值类型介绍 整型 整型就是我们平时所说的整数 ...