這篇文章給大家介紹如何進(jìn)行Kettle的數(shù)據(jù)同步,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
站在用戶的角度思考問題,與客戶深入溝通,找到老河口網(wǎng)站設(shè)計與老河口網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋老河口地區(qū)。之前的業(yè)務(wù)需求是實現(xiàn)數(shù)據(jù)的增量同步,具體描述為:新增數(shù)據(jù)插入,變化數(shù)據(jù)更新,我使用輸出中的插入更新即可。
現(xiàn)在業(yè)務(wù)提出新的需求:除前面描述外,還要實現(xiàn)源表數(shù)據(jù)刪除時,目標(biāo)表數(shù)據(jù)同樣刪除。
雖然我極其不推薦這樣做,原因有三:
(1)數(shù)據(jù)庫不應(yīng)該真正存在delete操作,如果確實要刪除一條數(shù)據(jù)的話,理論上應(yīng)該在數(shù)據(jù)庫中設(shè)置標(biāo)志位,執(zhí)行update,不向前端業(yè)務(wù)顯示,但數(shù)據(jù)仍存在數(shù)據(jù)庫中,便于追溯和回退;
(2)ETL實現(xiàn)刪除數(shù)據(jù)的操作,一旦出現(xiàn)問題,很難查找和解釋原因,容易出現(xiàn)互相扯皮和推諉現(xiàn)象;
(3)我需要重新開發(fā)ETL。雖然個人難以接受,奈何業(yè)務(wù)需求是天,我也得硬著頭皮去完成,之后可能發(fā)生的事情,只能“走一步看一步”,聽天由命了。記錄關(guān)鍵過程如下:
1.轉(zhuǎn)換的核心對象共4個,包括2個輸入、1個合并記錄和1個數(shù)據(jù)同步
【表輸入在輸入中找:合并記錄在鏈接中;數(shù)據(jù)同步在輸出中】分別設(shè)置源數(shù)據(jù)和目標(biāo)數(shù)據(jù),其中記錄數(shù)量限制為0就是全部同步。
2.合并記錄設(shè)置,要注意舊數(shù)據(jù)源是要同步的數(shù)據(jù),也就是目標(biāo)數(shù)據(jù);新數(shù)據(jù)是來源數(shù)據(jù),也就是被同步的數(shù)據(jù)。標(biāo)志字段隨便起名即可(要符合命名規(guī)范)。匹配的關(guān)鍵字段最好是主鍵(唯一值勉強(qiáng)也行),數(shù)據(jù)字段是要同步的列(注意,一定要包括關(guān)鍵字段,否則目標(biāo)數(shù)據(jù)該列就是空值,千萬注意?。。H缦聢D:
3.合并完成后,標(biāo)志字段的值有4種,分別是:
“Identical” : 關(guān)鍵字段在新舊數(shù)據(jù)源中都存在,且域值相同
“changed” : 關(guān)鍵字段在新舊數(shù)據(jù)源中都存在,但域值不同
“new” : 舊數(shù)據(jù)源中沒有找到該關(guān)鍵字段
“deleted”: 新數(shù)據(jù)源中沒有找到關(guān)鍵字段
則數(shù)據(jù)同步的配置需要注意以下幾點:
(1) 不論是查詢的關(guān)鍵字,還是更新字段,都要把標(biāo)志字段去掉(注意,去掉標(biāo)志字段?。黄渌侄胃鶕?jù)業(yè)務(wù)需求,進(jìn)行設(shè)置;
(2) 高級標(biāo)簽中的規(guī)則要定義好,否則會報“It was not possible to find operation field [null] in the input stream!”錯誤。
4.根據(jù)需要是定時操作,還是手工操作,如果定時的話,重新建個作業(yè),設(shè)定開始相關(guān)的配置即可。
另外需要強(qiáng)調(diào)一下,如果源數(shù)據(jù)和目標(biāo)數(shù)據(jù)字段不一樣的話,來源數(shù)據(jù)可以用as來改變列名,并一定注意名稱和列順序一致。
關(guān)于如何進(jìn)行Kettle的數(shù)據(jù)同步就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。