kettle的【阻塞資料】、【阻塞資料直到完成】、【執行SQL指令碼】

來源:互聯網
上載者:User

標籤:綁定變數   轉義符   images   -o   基礎   遇到   ext   col   選擇   

kettle轉換中的各個組件是並行的關係,job中是有先後順序的,這樣就可能會遇到一種情況——我想在某個步驟完成後再執行下面的步驟,這時該怎麼辦呢?那麼這時就可以用到【阻塞資料】和【阻塞資料直到完成】兩個組件;
【阻塞資料】:這個組件只允許前一個步驟的最後一條資料通過,這個往往和【執行SQL指令碼】組件 並用;
【阻塞資料直到完成】:這個組件會將所設定的被阻塞步驟的所有資料堵住,當被阻塞的步驟完成後,才會將被阻塞步驟的所有資料往下一個步驟推;

註:雖然阻塞了,但是阻塞之後的步驟仍然在運行,即已耗用時間仍然在進行;

【執行SQL指令碼】:

這個組件是一個相對比較複雜的組件,在轉換中這個組件是運行優先順序很高的組件,如果不勾選{執行每一行}這個選項,那麼該組件就只會執行一次,勾選了這個選項那麼執行次數就是前一個步驟的資料條目數;如果想實現該組件只在最後一步執行一次,那麼可以這樣來操作

【注】:此時別忘了勾選{執行每一行}這個選項,這個流程的邏輯就是當【表輸出】完成後,將其的最後一條資料推過【阻塞資料】,然後執行【執行SQL指令碼】,因為勾選了{執行每一行}這個選項,又因為【阻塞資料】只有一條資料,那麼【執行SQL指令碼】只執行一次;

另外【執行SQL指令碼】還有一些其他的選項,如{變數替換}等;
一、當要使用變數時必須勾選{變數替換}這個選項,如果只勾選這個選項,那麼變數只能使用${變數名}這樣的,且當變數值為字串時,必須要加單引號,如‘${變數名}’,否則會報錯;
二、如果要使用前面步驟的值,那麼必須要同時勾選{執行每一行},{變數替換},這時使用變數可以用?代替,這樣你才可以編輯下面的參數;
但是還是有幾種情況:1.當勾選了{Bind parmaters}時(也就是綁定變數),這時仍然可以使用${變數名}這種方式但字串時必須要加單引號,但是?就不管值是否是字串都不用加單引號,否則報錯;
2.如果不勾選{Bind parmaters},那嗎?為字串是必須加單引號;你可你這樣理解,不勾選{Bind parmaters},把?的值當成數字來處理,此時當?為數字或者sql中的中的欄位或者sql語句;而勾選了{Bind parmaters},那麼就把?的值當成一個帶有單引號的字串;
3.{Quotes String },該選項與“Bind parmaters”選項只能選一個,勾選該選項的作用是,在替換的變數前後兩端加上單引號,並且對於特殊字元進行轉義,比如條件值中,有單引號時,kettle會自動在單引號前再加一個單引號(在兩端單引號的基礎上),如想要在資料庫中輸入‘wang,那麼輸入的時候就要這樣‘‘‘wang‘,第一個和最後一個單引號是標明為字串,第二個單引號起到的作用是轉義符,第三個才是真正需要的文本單引號;此時變數用?,不要加單引號;

註:?的順序就是你在{參數}選項中編輯的欄位的順序;
若想使用${參數名},那麼無論怎麼選擇當其值只能被當做字串時必須加單引號,值只能是數字和字串;

kettle的【阻塞資料】、【阻塞資料直到完成】、【執行SQL指令碼】

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.