我正在创建一项工作,使用talend open studio将数据从数据库提取到CSV文件。表中有100个表,数据类型和列数不同,我想从单个作业和可自定义的SQL查询中提取数据库表中的数据。我知道如何创建和使用上下文变量。
答案 0 :(得分:0)
如果我理解正确的话,你应该在每一行使用tMap重新加载 - 选择并在Excel表格或tFixedFlowInput中定义表名。
SQL脚本:
"SELECT TOP(1) Name, Code from mdm." + (String)globalMap.get("row4.table")
我以Microsoft SQL Server为例,但同样的脚本也适用于MySQL。
答案 1 :(得分:0)
您可以简单地使用通过tWhicheverDatabaseInput中的--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中的这个未知结构。此功能仅存在于企业版中。
如果您可以使用企业版,只需声明一个“动态”类型的列,您可以通过其余的流程。
答案 2 :(得分:0)
声明本地上下文将查询声明为字符串类型。
使用变量查询准备上下文文件:MethodReference
超越查询:Operand
当您具有字符串类型的Instruction
条件时,查询会抛出一些错误。
需要对此进行更多调查。否则它会起作用。