表输入插入步骤数据

时间:2013-01-22 03:47:42

标签: etl pentaho

当我使用表格输入并从步骤中插入数据来替换?在sql中。

例如,

select * from a where b in (?)

从mysql日志

,sql是select * from a where b in ('0,1,2,3')

如何在没有'?

的情况下执行它

由于

1 个答案:

答案 0 :(得分:1)

我看到有三种可能的方法。我猜你喜欢选择'C'是最好的。

A)如果您知道IN子句总是只有4个值,您可以通过将4个值存储在Job变量中并使用Get Variables步骤将它们读入单行然后将该行流入数据库查找步骤,其SQL如下所示:

select * from a where b in (?, ?, ?, ?)

并替换单个传入行中的值。

B)如果你有一个可变数量的值,我会考虑将值列表标准化为行,也许是使用Split Fields to Rows步骤,使用Add Constants为每行添加'found'值,然后流动那些进入Stream Lookup。然后在Stream Lookup之后,将所有行'found'的值移到Dummy步骤为空。

C)在Job中构建值列表并将其作为变量传递。在表输入步骤中使用如下语句:

select * from a where b in (${varname})

并选中'替换变量脚本'。该变量将在执行之前扩展到SQL中。