2015-09-20 47 views
0

我有一個CSV文件,其中包含我需要使用Pentaho ETL Kettle在數據庫表中加載的數據。但在將它們加載到表中之前,我需要使用從CSV文件獲取的值構建要插入的每一行,並且需要從另一個輸入表(需要CSV中的數據作爲參數收集想要的信息)收集的值。我有點迷失了我必須使用的步驟來構建我的轉型。誰能幫忙?使用Pentaho Kettle,如何在CSV文件的輸出表中加載數據,並在輸入表中進行中間步驟讀取?

回答

2

我認爲,最簡單的方法是這樣的:

  • 首先你讀了CSV使用文本輸入步驟
  • 然後使用一個數據庫加入一步,你從表中得到額外的列文件,東西如:

    SELECT col1, col2, col3 
    FROM input_table 
    WHERE common_column = ? 
    

    用佔位符?這將從您必須在此步驟中指定的參數中替換。

  • 然後您可以將數據發送到輸出步驟,如「表輸出」。

事情是這樣的:

Read CSV and add columns from a table

它不一定是最高效的解決方案,這取決於如何是你的數據,或者您可以使用「數據庫查找」步驟或「表輸入」然後加入。

+0

謝謝@fthiella的訣竅。我正在嘗試使用**「Table Input」**步驟來取得成功;問題是我不知道如何使用來自文本輸入步驟的參數在表格輸入步驟中構建查詢。但它在數據庫連接步驟中正常工作。你是我的拯救者。 :) 再次感謝你。 –

+0

@EdouardHINVI如果使用表輸入步驟,您必須讀取每行(或一組過濾的行),但無法在其中指定任何參數,則必須稍後使用連接行步驟。數據庫查找也是一個不錯的選擇,但是我發現數據庫連接更容易理解和使用!歡迎您:) – fthiella

+0

這裏唯一需要注意的是'Database Join'可以實現真正的連接。如果您有多個匹配的行,除非您將1指定爲「要返回的行數」,否則您將在輸出中獲得多個行。如果輸出中只需要0或1行,請使用「數據庫查找」或可能的「流查找」步驟。 –

相關問題