我正在创建一个使用人才开放工作室从数据库拉数据到CSV文件的工作。有100个表,数据类型和列在表中没有不同,我想从数据库表中使用单个作业和可定制的SQL查询提取数据。我知道如何创建和使用上下文变量。
如果我正确理解你,你应该使用tMap的重新加载在每一行选项和定义表名称在Excel表或tFixedFlowInput。
tMap设置整个工作和结果
SQL脚本:"SELECT TOP(1) Name, Code from mdm." + (String)globalMap.get("row4.table")
我使用Microsoft SQL Server为例,但同样的脚本也适用于MySQL
你可以简单地使用一个上下文变量,你可以在tveverdatabaseinput中通过——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"的列,您可以在流的其余部分传递它。
-
声明一个本地上下文说查询为字符串类型
-
准备一个带有变量查询的上下文文件:
query=select name from employee
-
执行查询:
toraclecomponent use context.query
查询抛出一些错误,当你有where
条件与字符串类型。需要对此进行更多的调查。