mysql 執行job job中執行每行

2021-10-17 15:14:28 字數 1384 閱讀 9448

job中執行每行 有時,我們需要job或轉換執行多次,且每次傳入的引數都不同。假如你正在做資料遷移的工作,需要匯入每天的舊資料,則需要乙個job根據指定的日期匯入資料,該日期被指定作為引數,如果我們需要匯入從乙個起始日期到昨天所有的舊資料,手工執行j

job中執行每行

有時,我們需要job或轉換執行多次,且每次傳入的引數都不同。假如你正在做資料遷移的工作,需要匯入每天的舊資料,則需要乙個job根據指定的日期匯入資料,該日期被指定作為引數,如果我們需要匯入從乙個起始日期到昨天所有的舊資料,手工執行job是痛苦的也是錯誤的做法,kettle是可以首先計算正確的日期然後根據每個日期執行匯入job。

在主job中,首先執行返回日期轉換(每個日期作為一行),實際匯入資料的job放在轉換的後面執行,並且根據轉換的結果執行每一行,job可以被設定從乙個結果欄位中獲取引數。

生成日期

這個轉換負責生成只有乙個日期欄位的資料行,「set start date 」步驟生成10000行資料流(根據實際情況估算行數,測試時可以設定小點),包括乙個日期型別常量字段。「calc days」步驟插入乙個序列到資料流中,為了在「calc date」步驟可以計算連續的日期;其後的步驟去除掉其他的輔助字段,然後增加昨天的日期到資料流中;接著是乙個比較功能的步驟,判斷每行的中日期是否早於今天,如果進入「discard」步驟,否則進入「copy rows to result」步驟。

主job

主job中執行生成日期轉換之後,是子job,負責執行每個輸入日期,該job必須要明確設定去執行每個輸入行,即設定「execute for every input row」核取方塊選中。同時需要傳入乙個計算日期,通過「date」引數,所以「copy previous results to parameters?」也需要選中。最後引數必須從輸入行中對映,引數名和輸入欄位都命名為「date」。

子job

子job接收每行的「date」日期引數並執行,示例中簡單使用date引數記錄日誌然後完成。

mysql的語句執行過程 Mysql語句執行過程

昨天老大問了我個問題,說一條 在低層的時候是怎麼執行的,發生了什麼 首先使用者通過各種鏈結連線到我們的 伺服器 但是這些鏈結需要等待伺服器的空閒程序來處理 所以當伺服器接到一條 後會做很多分解動作 首先在快取裡查詢快取中是否有需要的資料表,如果有並且可以用那麼就不執行後面的動作了,直接返回給使用者 ...

mysql索引執行計畫 MySQL索引及執行計畫

mysql索引及執行計畫 索引合理的建立索引可以加快資料查詢,例如,學校圖書管為每一本書編號,根據編號可以快速鎖定一本書所在位置。mysql索引預設b 樹索引。索引雖然能夠提高檢索效率,但同時也會降低更新的速度,因為insert update delete也會操作索引檔案,會調整因為更新等操作帶來的...

mysql檢視sql執行過程 SQL查詢執行過程

mysql查詢執行過程客戶端向伺服器傳送請求 伺服器查詢快取,快取中命中則結束,將結果返回客戶端 返回前會檢查使用者許可權 否則繼續下邊步驟 伺服器端進行sql解析 預處理,再由優化器生成對應的執行計畫 根據執行計畫呼叫儲存引擎的api執行查詢 將結果返回客戶端 一 查詢快取 如果一條sql語句以s...