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服务器启动多个端口,同步单表数据
============================================================ ====多端口启动==== ========================= ...
随机推荐
- 将Jenkins的测试结果整合到Testlink
如果试用Jenkins进行构建,构建中的测试结果可以直接作为Testlink的自动直接结果. 1. Testlink 中新增custom field. 2. 用例中custom field中加 ...
- iOS游戏开发之UIDynamic
iOS游戏开发之UIDynamic 简介 什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架 可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象 ...
- MySQL基础、索引、查询优化等考察点
MySQL基础 MySQL数据类型 整数类型 TINYINT. SMALLINT. MEDIUMINT. INT. BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,例如:INT(1 ...
- webstorm里直接调用命令行
写代码写到一半要切换窗口出去敲命令行?webstorm的external tools可以帮你省下一点时间 举例说明,比如我要直接使用npm: ctrl+alt+s打开setting菜单,找到exter ...
- webpack遇见的坑:Please install 'webpack-cli' in addition to webpack itself to use the CLI.
webpack-cli没被找到: 在webpack4.0之后,需要全局安装webpack-cli, 在全局安装webpack之后,cnpm i webpack-cli -g 在局部使用webpack时 ...
- Spring全局异常捕获
package org.xxx.ac.zpk.exception; import java.io.IOException; import javax.servlet.http.HttpServletR ...
- 解决idea开启tomcat报Configuration Error: deployment source 'xxx:war exploded' is not valid错
这个问题比较棘手, 出错了的时候Tomcat服务器不能正常运行, 导致网页无法打开, 小组成员都说"Tomcat炸了"! 好在这个这个xml配置文件是自动生成的,重新生成一下就好了 ...
- CSS三栏布局的四种方法
总括: 不管是三栏布局还是两栏布局都是我们在平时项目里经常使用的,也许你不知道什么事三栏布局什么是两栏布局但实际已经在用,或许你知道三栏布局的一种或两种方法,但实际操作中也只会依赖那某一种方法,本文具 ...
- linux系统查看网络连接情况
netstat命令状态说明: CLOSED 没有使用这个套接字[netstat 无法显示closed状态] LISTEN 套接字正在监听连接[调用listen ...
- vuex相关(actions和mutation的异曲同工)
vuex说明: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 包含的内容: state: ...