日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

發布時間:2025/3/21 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 kettle获取当前日期_kettle中通过 时间戳(timestamp)方式 来实现数据库的增量同步操作(一)... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這個實驗主要思想是在創建數據庫表的時候,

通過增加一個額外的字段,也就是時間戳字段,

例如在同步表 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)方式 来实现数据库的增量同步操作(一)...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。