我得到了这样的要求,创建一个读取多个表并动态写入多个文件的 Talend 作业(当我们通过上下文变量提供表名时,作业应该将该表作为select * from tablename
并写入文件 tablename.txt)
我在 toracle 输入阶段给出的 oracle 查询-
"SELECT * FROM '"+context.Table_Name+"'"
在上下文变量部分给出为
Table_Name- String- checked Prompt for value for dynamic table name
在我给出的 Oracle 表的元数据定义中
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)
但是当我对表名进行硬编码时,工作运行良好
我给出的目标文件路径为
"C:/Talend/OutputFIles/context.Table_Name.txt"
而不是打印上下文变量的值,我得到的context.Table_Name.txt
是文件名!!!
请帮助我