ETL增量单表同步简述_根据dateTime增量
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增量的更多相关文章
- ETL增量单表同步简述_根据timestamp增量
ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ...
- ETL全量单表同步简述
ETL全量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 注意点: 1.数据库合并时,选择正确的数据源 ...
- Logstash学习之路(四)使用Logstash将mysql数据导入elasticsearch(单表同步、多表同步、全量同步、增量同步)
一.使用Logstash将mysql数据导入elasticsearch 1.在mysql中准备数据: mysql> show tables; +----------------+ | Table ...
- ETL全量多表同步简述
ETL全量多表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 1.获取同步表名如下图: 2.循环迁移数据如 ...
- mysql 主从单库单表同步 binlog-do-db replicate-do-db
方案一:两边做主从. SELECT SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) FROM information_schema.tables WHERE TABLE_SCHE ...
- KETTLE单表同步,写入EXCEL和TXT
以下操作都在5.0.1版本下进行开发,其余版本可以进行自动比对 在平时工作当中,会遇到这种情况,而且很常见.比如:1.自动生成文件TXT或者EXCEL(电信行业该需求居多),上传至某服务器:2.双方数 ...
- SQLAlchemy(1):单表操作
SQLAlchemy 是一个 ORM框架:类对应表,类中的字段对应表中的列,类的对象对应表的一条记录:作用:帮助我们使用类和对象快速实现数据库操作操作数据库的方式: 1. 原生SQL - pymysq ...
- kettle实现同构单表增量同步
job如下: 如下转换:获取区服列表,将id列表保存到结果(内存) job: 同构数据库单表抽取(每个输入执行一次) 同构数据库单表抽取(job) 的具体实现如下: 转换:获取数据库连接ID 从结果获 ...
- CentOS6.4 配置mysql服务器启动多个端口,同步单表数据
============================================================ ====多端口启动==== ========================= ...
随机推荐
- java中字节和字符的转换操作
package com.ywx.io; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputSt ...
- jQuery.ajax() 设置 Headers 中的 Accept 内容
jQuery.ajax() 如何设置 Headers 中的 Accept 内容 其实很简单,首先如果是常见类型,则请直接设置 dataType 属性 $.ajax({ dataType: &quo ...
- Jquery+ashx实现Ajax
一 Ajax的实现方式 1.使用一般的webform,在页面用jQuery ajax调用,再从取得的html数据中取得<body>内的内容,写入DOM 优点:不用改变现有的asp.net开 ...
- ARM开发板如何选型-I.MX6Q开发板
拥有丰富扩展能力,供货周期长的开发平台,省事安心 处理器:迅为-i.MX6开发板恩智浦Cortex-A9 四核i.MX6Q处理器,主频1GHz,内存2G,存储16GB. 系统支持:i.MX6开发板 ...
- CREATE OPERATOR - 定义一个新的操作符
SYNOPSIS CREATE OPERATOR name ( PROCEDURE = funcname [, LEFTARG = lefttype ] [, RIGHTARG = righttype ...
- 如何优化LIMIT
首先我们先创建个数据表做测试 表名 test (id(int) , name(var char) , content(text) , pid(int) ) 往里面倒几百万条数据进去做测试. 我们都知道 ...
- Bzoj 3307 雨天的尾巴(线段树合并+树上差分)
C. 雨天的尾巴 题目描述 N个点,形成一个树状结构.有M次发放,每次选择两个点x,y对于x到y的路径上(含x,y)每个点发一袋Z类型的物品.完成所有发放后,每个点存放最多的是哪种物品. 输入格式 第 ...
- MSYS2 使用
在Windows下编译mongo-c-driver 1.3.x 在Windows下编译mongo-c-driver 1.3.x 1.安装 MSYS2https://sourceforge.net/pr ...
- Autorelease pools 官方文档
翻译自: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmAu ...
- mysql负载均衡
一.docker安装haproxy:docker pull haproxy 二.配置haproxy(参考url:https://zhangge.net/5125.html),vim /usr/loca ...