2016-08-18 54 views
1

我有很多數據庫(+100),每個數據庫都有相同的結構和不同的連接。 我正在使用Kettle在不同數據庫中運行轉換以創建數據倉庫。對水壺上的多個數據庫連接運行相同的轉換

如何使用不同的連接自動運行相同的轉換?

我已經證明了這個Pass DB Connection parameters to a Kettle a.k.a PDI table Input step dynamically from Excel但它只接受csv中的一行。

我應該創建一個循環,還是我需要創建一個腳本?

任何幫助,將不勝感激。 (對不起,我的英語)

+0

「但它只接受csv中的一行」 - 這是什麼意思?它可以有+100行(每行保存到某個數據庫的連接細節)。在變量中設置連接詳細信息並在運行之後運行子信息。在目錄$ KETTLE_HOME/example中有一個例子如何使用substransformation – simar

回答

2

你可以用循環做到這一點。 但是,不要擔心,用Pentaho做這件事並不難。

首先,你會用作業來創建你的循環:

START - >Transform_that_holds_parameters - >Transform_to_run_in_a_loop

正如您可以猜到,你的轉換運行同樣在每個DB上是這個流的最後一個。但我們需要在該作業輸入上設置兩個高級標誌:

  • 對每個輸入行執行?
  • 將以前的結果複製到參數中?

這時我們就需要用下面的結構來構建我們Transform_that_holds_parameters

Some_sort_of_input - > copy_rows_to_result

在這裏,你將不得不抓住從某處所有連接參數,無論是Excel文件或另一個數據庫中的表格。但是,一旦您對這些數據進行了修改,請確保每個要運行轉換的數據庫都有一行。好嗎?

將它連接到'Copy rows to result'步驟,這一步將數據發送回我們的JOB,如果您記得,我們的下一個轉換設置爲'對每個輸入行執行'和'將以前的結果複製到參數」。

現在,請記住什麼是列轉換的最後一步的列名,您將需要他們在下一步。

你回我們的工作,並轉到Transform_to_run_in_a_loop,開放參數的特性,並在列「參數」和'流的列名稱與我們剛纔複製到結果列填寫。

在您的轉換中,您將需要使用完全相同的名稱設置相同的參數。在連接設置中使用這些參數。

完成後,現在您將擁有第一個轉換設置所有參數的設置,第二個轉換將爲您擁有的每個數據庫配置運行。

相關問題