如何在pentaho中将表名作为输入传递

如何在pentaho中将表名作为输入传递,pentaho,Pentaho,我正在进行pentaho转换并使用表输入。条件是表的名称将作为参数动态传递。因此,表输入具有sql: select * from ? 这个表输入从一个Get Variables步骤中获取输入,在这个步骤中,我定义了一个名为'table\u name'的变量。当我运行转换时,我传入tablename 我需要这样做,因为表名的形式是abc\u ddmmyyyy,ddmmyyyy可以不同。您考虑过使用元数据注入吗?以下是一篇可能有帮助的文章: 还有一篇文章是关于每个文件名运行一次转换的: 这可以通

我正在进行pentaho转换并使用表输入。条件是表的名称将作为参数动态传递。因此,表输入具有sql:

select * from ?
这个表输入从一个
Get Variables
步骤中获取输入,在这个步骤中,我定义了一个名为
'table\u name'
的变量。当我运行转换时,我传入tablename


我需要这样做,因为表名的形式是abc\u ddmmyyyy,ddmmyyyy可以不同。

您考虑过使用元数据注入吗?以下是一篇可能有帮助的文章:

还有一篇文章是关于每个文件名运行一次转换的:

这可以通过使用java代码来解决。首先,您可以在编辑->设置中设置参数,并查看参数选项卡,然后添加参数。假设参数名称类似于表\u名称,然后编写java代码,如下所示

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.Result;
import org.pentaho.di.core.RowMetaAndData;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.util.EnvUtil;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
上述jar位于pdi lib文件夹中。并设置如下表名

KettleEnvironment.init(false);
                EnvUtil.environmentInit();
                TransMeta transmeta = new TransMeta("path of your ktr file");
                Trans trans = new Trans(transmeta);
                trans.setParameterValue("TABLE_NAME",your_table_name );
                trans.execute(null); 
                trans.waitUntilFinished();
                Result r = trans.getResult();
                List<RowMetaAndData> rowsResult = r.getRows();
                System.out.println(trans.getTransMeta());
                 if (trans.getErrors() > 0) {
                 throw new RuntimeException();
                 }
cattleEnvironment.init(false);
EnvUtil.environmentInit();
TransMeta TransMeta=新的TransMeta(“ktr文件的路径”);
Trans Trans=新的Trans(TRANSETA);
trans.setParameterValue(“表名”,即您的表名);
trans.execute(空);
trans.waitUntilFinished();
结果r=trans.getResult();
List rowsResult=r.getRows();
System.out.println(trans.getTransMeta());
如果(trans.getErrors()>0){
抛出新的RuntimeException();
}

并在ktr表查询中写入,如
select*from${table\u NAME}

使用变量,如${table\u NAME}?意味着准备好的声明,对你的工作没有好处。

谢谢我在这里找到了答案