2017-01-31 40 views
0

我有一個'查詢'字段包含一個選擇SQL和另一個'參數'字段包含SQL參數的表。我已經將這兩個字段合併到一個包含正確選擇sql語句的新字段中。現在我需要執行這個包含select sql的新字段,從select(輸出字段)獲取返回值並生成一個excel文件。如何在Pentaho的字段中運行select sql語句?

回答

1

如果您對查詢結果集感興趣,請使用表輸入法。表輸入支持SQL參數,因此不需要使用例如替換字符串,然後在路上跳過轉義。此外,還有變量替換,以防萬一你不能使用單個模板。

更新21:14 GMT

我不是很喜歡你試圖準備SELECT語句的方式,但在這裏我們去,假設它是一個單獨的語句有:

創建具有開始條目和2個變換條目(T1,T2)的作業。讓T1生成包含SELECT語句的字段,並使用Set-Variables步驟將語句作爲變量SELECT使用。在T2中,使用SQL語句文本區域中引用$ {SELECT}的表輸入步驟。不要忘記啓用選項「在腳本中替換變量」。

從現在開始,這是一個味道的問題。我寧願使用文本文件輸出創建一個CSV文件。使用正確的字段分隔符Excel將在雙擊它之後打開該文件。文本文件輸出的優點是您無需在設計時指定您不知道的字段。一個空的字段列表將只處理所有進入的字段。與Table-Input中的總投影類似,它將從檢索的列向下遊創建必要的字段。

如果您必須生成一個Excel工作簿,您必須learn about metadata injection。不過,這對初學者來說是一個單獨的項目。您的Kettle安裝文件夾中有樣本。如果你發現自己陷入困境,那麼有一個非常有用的方法就是active community

+0

Marabu,我的表有一個名爲'query'的字段,其中包含'select * from table',另一個字段名爲'parameters',其中包含'where cdclient = 12345'。我創建了一個名爲'Sql'的新字段,其中包含'query'+'parameters'字段的連接(形成Select Sql Statement)。現在我想執行這個字段'Sql',從select(輸出字段)得到返回並生成一個excel文件。 –

+0

那麼你的問題是什麼?如何將字段轉換爲Kettle變量,以便您可以將它與Table-Input一起使用?如何處理在設計時不知道的總投影和字段?或者如何從Kettle行集創建Excel工作簿?請幫助我,我迷路了。 – marabu

+0

marabu,對不起!也許這還不夠清楚,因爲我還是不太瞭解水壺,但我看到你逐漸瞭解我。 我有一個帶有Select語句的字段的表格輸入。如何在字段中執行選擇語句,並獲得選擇的結果? 我使用表輸入來獲取表字段,我必須使用Excel輸出來生成Excel文件。我試圖使用執行行SQL腳本或動態SQL行,但我不知道如何使用它,而且我也不知道應該使用哪個組件。 –