Talend中动态作业创建中的问题

时间:2017-05-09 21:24:18

标签: talend talend-mdm

我得到了这样的要求, 创建单个Talend作业,读取多个表并动态写入多个文件(当我们通过上下文变量提供表名时,作业应该将该表作为select * from tablename并写入文件tablename.txt)

我在oracle输入阶段给出的oracle查询 -

"SELECT *  FROM '"+context.Table_Name+"'"

在上下文中,变量部分为

Table_Name-    String-   checked Prompt for value for dynamic table name

在Oracle表的元数据定义中,我给出了

Type="dynamic" db type="varchar2"

面临的问题:

  1. 作业尚未识别上下文变量

    ORA-00903: invalid table name
    Exception in component tOracleInput_1
    java.sql.SQLSyntaxErrorException: ORA-00903: invalid table name
    
    at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91)
    at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112)
    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173)
    

    但是当我对表名进行硬编码时,作业运行良好

  2. 我给出的目标文件路径为

    "C:/Talend/OutputFIles/context.Table_Name.txt"
    
  3. 我没有打印上下文变量的值,而是以context.Table_Name.txt作为文件名!!!

    请帮我解决这个问题

1 个答案:

答案 0 :(得分:3)

您是否尝试删除'围绕表名?'试试这个:
"SELECT * FROM " + context.Table_Name

对于文件名构造,您应该写:
"C:/Talend/OutputFIles/" + context.Table_Name + ".txt"

最好,你应该有一个由上下文变量定义的路径名,给出:
context.OutputPath + context.Table_Name + ".txt"

TRF