这个实验主要思想是在创建数据库表的时候,

通过增加一个额外的字段,也就是时间戳字段,

例如在同步表 tt1 和表 tt2 的时候,

通过检查那个表是最新更新的,那个表就作为新表,而另外的表最为旧表被新表中的数据进行更新。

实验数据如下:

mysql database 5.1

test.tt1( id int primary key , name varchar(50) );

mysql.tt2( id int primary key, name varchar(50) );

快照表,可以将其存放在test数据库中,

同样可以为了简便,可以将其创建为temporary 表类型。

数据如图 kettle-1

kettle-1

============================================================

主流程如图 kettle-2

kettle-2

在prepare中,向 tt1,tt2 表中增加 时间戳字段,

由于tt1,tt2所在的数据库是不同的,所以分别创建两个数据库的连接。

prepare

kettle-3

在执行这个job之后,就会在数据库查询的时候看到下面的字段:

kettle-4

然后, 我们来对tt1表做一个 insert 操作 一个update操作吧~

kettle-5

在原表上无论是insert操作还是update操作,对应的updateTime都会发生变更。

如果tt1 表 和 tt2 表中 updateTime 字段为最新时间的话,则说明该表是新表 。

下面只要是对应main_thread的截图:

kettle-6

在main_thread中的过程是这样的:

首先创建一个快照表,然后将tt1,tt2表中的最大(最新)时间戳的值插入到快照表中。

然后,通过一个transformation来判断那个表的updateTime值最新,

来选择对应是 tt1表来更新 tt2 还是 tt2 表来更新 tt1 表;

main_thread.create_tempTable.JOB:

main_thread.insert_tempTable.Job:

main_thread.tt1_tt2_syn.Transformation:

首先,创建连接 test 数据库的 temp 表的连接,

选择 temp表中 对应 lastTime 值最新的所在的记录

所对应的 id 号码。

首先将temp中 lastTime 字段进行 降序排列,

然后选择id , 并且将选择记录仅限定成一行。

然后根据id的值进行 switch选择。

在这里LZ很想使用,SQL Executor,

但是它无法返回对应的id值。

但是表输入可以返回对应的id值,

并被switch接收到。

合并记录和同步记录的时候,两种情况是一样的。

这样的话,实验环境已经搭建好了,

接下来进行,实验的数据测试了,写到下一个博客中。

当然,触发器也是一种同步的好方法,写到后续博客中吧~

时间戳的方式相比于触发器,较为简单并且通用,

但是 数据库表中的时间戳字段,除了这个用途之外没有其他用途,

耗费了大量内存空间。

kettle获取当前日期_kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)...相关推荐

  1. kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)

    这个实验主要思想是在创建数据库表的时候, 通过增加一个额外的字段,也就是时间戳字段, 例如在同步表 tt1 和表 tt2 的时候, 通过检查那个表是最新更新的,那个表就作为新表,而另外的表最为旧表被新 ...

  2. kettle获取当前日期_kettle获取系统时间

    Date.prototype.Format = function (fmt) { //author: meizz var o = { "M+": this.getMonth() + ...

  3. MySQL获取当前日期、时间、时间戳函数

    MySQL获取当前日期.时间.时间戳函数 1.MySQL 获取当前日期时间 函数 1.1 获取当前日期(date)函数:curdate() 1.2 获取当前时间(time)函数:curtime() 1 ...

  4. java怎么获取当前日期_JAVA中获取当前系统时间

    一. 获取当前系统时间和日期并格式化输出: import java.util.Date; import java.text.SimpleDateFormat; public class NowStri ...

  5. JavaScript 获取当前日期——JS 中的今天日期

    在开发 Web 应用程序时,您可能需要包括执行特定操作的当前日期. 例如,当通过表单提交数据时,您可能希望包括数据的创建日期或提交表单的时间. 在本文中,我们将学习如何从头开始使用 JavaScrip ...

  6. db2获取当前日期、时间、时间戳、年份

    https://zhidao.baidu.com/question/293930034.html https://blog.csdn.net/chenlmyy/article/details/5366 ...

  7. mysql中日期时间戳timestamp使用小结

    timestamp时间戳类型在mysql数据库中比较常见,但是我们很容易忽视它的一些特征,这个我在面试中吃过亏,这里对他的一些用法和特点补充一下.也让自己加深印象.一般来说,我们使用日期,一般采用da ...

  8. java timestamp时间戳_求助!java中关于时间戳Timestamp的问题

    代码如下:GregorianCalendargcal=newGregorianCalendar();//获得当前时间DateFormatdf=DateFormat.getDateTimeInstanc ...

  9. impala中的时间戳 TIMESTAMP类型用法(转载网上电子书)(不是我原创)

    查看一个日期是第几周和星期几 日期计算 查询指定日期是多少号 查询两个日期差了多少天 查询当前时间 时间戳常量和隐式转换

最新文章

  1. Qt实用技巧:使用OpenCV库的视频播放器(支持播放器操作,如暂停、恢复、停止、时间、进度条拽托等...
  2. 用supervisord管理杂乱的服务
  3. 【网址收藏】Centos7.3离线(rpm方式)安装mysql服务
  4. 服务器性能优化之网络性能优化
  5. php后台无法登入,typecho 后台无法登陆
  6. vue路由参数改变,组件数据没重新更新问题
  7. sas中一些小的选项的含义
  8. 趣学 C 语言(四)—— 字符串与字符数组
  9. PIM DM技术原理与实验
  10. python集成包地址 Anaconda 一键安装拥有所有包
  11. python中的排序方法都有哪些_有没有办法在python中对列表进行排序,直到找到第一个排序的k元素?...
  12. 如何做好测试用例设计
  13. K3 Cloud 常用数据表整理
  14. Linux事件驱动网络编程,Linux系统编程之事件驱动
  15. 微信公众号迁移:流程指引、迁移内容、注意事项、申请函公证指引
  16. SEO关键词之选取策略及具体方法
  17. 第十九篇 -- 学习第十八天打卡20190708
  18. 去哪儿网2015校园招聘前端笔试题
  19. linux ftp主动和被动模式切换命令,Linux iptables配置FTP的主动和被动模式
  20. PS霓虹灯光字体效果一键制作方法

热门文章

  1. matlab 小波变换_matlab小波工具箱实例(二):时频分析和连续小波变换
  2. 一、简谈Pandas
  3. wiki维基百科上logo中字母的意思是什么?
  4. 明天是我的生日,写给24岁的自己
  5. 你真的懂redis的数据结构了吗?redis内部数据结构和外部数据结构揭秘
  6. 最小二乘法多项式拟合的Java实现--转
  7. A XSS filter for Java EE web apps--转载
  8. php中的单引号、双引号和转义字符
  9. 谢百三:房价上涨的九大原因
  10. 一图看尽全生态, 2018区块链产业云图重磅发布