在kettle中快速更新一個字段中的信息


數據庫中有訂單表tb_order,其中有order_id和user_id和user_name等字段。
數據庫中有用戶資料表tb_user,其中有user_id和user_name等字段。
現在需要使用tb_user.user_name來更新tb_order.user_name,兩個表的關聯條件是tb_order.user_id = tb_user.user_id。
通常,在兩個表都靜止的時候,可以使用一個update來解決,如下。

update tb_order
set user_name = (select user_name from tb_user u where u.user_id = tb_order.user_id);

但是,如果這兩個表的數據量較大,且兩個表都在生產頻繁使用的時候,一個update語句會鎖表,且需要較長的時間,從而可能會導致正常的業務無法快速進行。
此時,就應該單獨遍歷tb_order表中的每一條記錄,然后根據tb_order.user_id去tb_user中查詢每一條記錄中的user_name,最后根據tb_order.order_id來更新tb_order.user_name;這個單獨遍歷的方式,雖然不能完全解決鎖表引起的問題,但是也可以較大概率避免。但是這個配置模式,效率非常低。
還有一個更好的思路,一個轉換就可以完成的配置。思路如下:
1、使用表輸入,從tb_order表中獲得數據;
2、使用數據庫連接控件,直接從表輸入的結果中獲得參數,然后執行查詢,從tb_user表得到需要的信息;
3、使用插入更新空間,直接修改tb_order中指定的字段。

因為這三個步驟在一個轉換中,所以,可以在第2步和第三步中設置並發數量來提高kettle的處理效率。
配置如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM