Talend 中的动态作业创建问题
Issue in Dynamic Job creation in Talend
我得到了这样的要求,
创建一个读取多个 table 并动态写入多个文件的 Talend 作业(当我们通过上下文变量给出 table 名称时,作业应将 table 视为 select * from tablename
并写入文件 tablename.txt)
我在 oracle 输入阶段给出的 oracle 查询-
"SELECT * FROM '"+context.Table_Name+"'"
在给出的上下文变量部分中
Table_Name- String- checked Prompt for value for dynamic table name
在 Oracle table 的元数据定义中,我给出了
Type="dynamic" db type="varchar2"
面临的问题:
作业未识别上下文变量
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)
但是当我硬编码 table 名称时,工作 运行 很好
我给的目标文件路径为
"C:/Talend/OutputFIles/context.Table_Name.txt"
我没有打印上下文变量的值,而是 context.Table_Name.txt
作为文件名!!!
请帮我解决这个问题
您是否尝试删除 table 名称周围的 '?
试试这个:
"SELECT * FROM " + context.Table_Name
同样的文件名构造,你应该写:
"C:/Talend/OutputFIles/" + context.Table_Name + ".txt"
更好的是,您应该使用上下文变量定义路径名,给出:
context.OutputPath + context.Table_Name + ".txt"
TRF
我得到了这样的要求,
创建一个读取多个 table 并动态写入多个文件的 Talend 作业(当我们通过上下文变量给出 table 名称时,作业应将 table 视为 select * from tablename
并写入文件 tablename.txt)
我在 oracle 输入阶段给出的 oracle 查询-
"SELECT * FROM '"+context.Table_Name+"'"
在给出的上下文变量部分中
Table_Name- String- checked Prompt for value for dynamic table name
在 Oracle table 的元数据定义中,我给出了
Type="dynamic" db type="varchar2"
面临的问题:
作业未识别上下文变量
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)
但是当我硬编码 table 名称时,工作 运行 很好
我给的目标文件路径为
"C:/Talend/OutputFIles/context.Table_Name.txt"
我没有打印上下文变量的值,而是 context.Table_Name.txt
作为文件名!!!
请帮我解决这个问题
您是否尝试删除 table 名称周围的 '?
试试这个:
"SELECT * FROM " + context.Table_Name
同样的文件名构造,你应该写:
"C:/Talend/OutputFIles/" + context.Table_Name + ".txt"
更好的是,您应该使用上下文变量定义路径名,给出:context.OutputPath + context.Table_Name + ".txt"
TRF