2015-10-26 19 views
1

我正在創建一個作業,使用talend open studio將數據從數據庫中提取到CSV文件。有100個表,數據類型和列的數量不同,我想用一個作業和可定製的SQL查詢從數據庫表中提取數據。我知道如何創建和使用上下文變量。如何在Talend Open Studio作業中將SQL查詢作爲上下文變量傳遞

+0

您絕對可以使用上下文變量來存儲您的SQL,並將您的tdatabaseInput組件中的上下文變量用作SQL源。但是,在使用它之前,您必須爲talend中的任何組件定義模式。這不是動態的,有選項可以使其動態,但我沒有看到它們的工作。所以是的,你可以使用上下文變量或全局變量,並重寫/設置他們在tJava或tSetGlobalVar組件,但我不知道如何使架構動態 – garpitmzn

回答

0

如果我正確理解了你的話,你應該在每一行使用tMap的重新加載選項,並在Excel工作表或tFixedFlowInput中定義表名。

tMap settings

Whole job and results

SQL腳本:

"SELECT TOP(1) Name, Code from mdm." + (String)globalMap.get("row4.table") 

我使用Microsoft SQL Server作爲例子,但相同的腳本作品以及與MySQL。

0

您可以簡單地使用通過在兩個數據庫輸入中通過--context_param參數設置的上下文變量。例如。定義的上下文變量「my_sql」您可以在命令行設定爲

my_job.sh --context_param my_sql="select a,b,c from a_test_table" 

,然後使用context.my_sql如你數據庫輸入組件的SQL。

但是,正如garpitmzn已經提到的那樣,您需要動態模式才能在Talend中使用這個未知結構。此功能只存在於企業版本中。

如果企業版本對您可用,只需聲明一個類型爲「Dynamic」的列,您可以通過其餘的流程。

0
  1. 聲明本地上下文查詢爲類型字符串。

  2. 準備一個背景文件,變量查詢:query=select name from employee

  3. Excecute查詢:當你有where條件與字符串類型toraclecomponent use context.query

查詢時拋出一些錯誤。 需要進一步調查。否則,它的作品。

相關問題