0

我在 Pentaho Kettle 的输入步骤中运行以下代码:

SELECT * FROM ${TABELA} WHERE TS_SAMPLETM BETWEEN TO_DATE('${HOJE}', 'DD/MM/YYYY') AND TO_DATE('${SEMANAPASSADA}','DD/MM/YYYY')

但是,当我通过这个 shell 脚本运行作业时:

#!/bin/sh
cd /home/rafael/data-integration/
export HOJE=$(date +"%d/%m/%Y")
export SEMANAPASSADA=$(date -d "7 days ago" +"%d/%m/%Y")
export tabela=tabela1

sh kitchen.sh -file=/home/rafael/data-integration/Job_Oracle_MySql.kjb -param:TABELA=$TABELA -param:HOJE=$HOJE -param:SEMANAPASSADA=$SEMANAPASSADA

表输入步骤不会替换变量。

4

1 回答 1

1

您的问题是您的 shell 脚本中的错误,而不是 Pentaho 或表输入步骤中的错误。如果您尝试在最后一行echo之前插入,sh您可以看到正在运行的命令:

echo sh kitchen.sh -file=/home/rafael/data-integration/Job_Oracle_MySql.kjb -param:TABELA=$TABELA -param:HOJE=$HOJE -param:SEMANAPASSADA=$SEMANAPASSADA

对我来说,这输出:

sh kitchen.sh -file=/home/rafael/data-integration/Job_Oracle_MySql.kjb -param:TABELA= -param:HOJE=18/12/2015 -param:SEMANAPASSADA=

您的 shellscript 中的问题是

  1. 区分大小写。替换$TABELA$tablea
  2. 对我来说,调用日期的方式是错误的,但这取决于你没有提供的操作系统。我需要写export SEMANAPASSADA=$(date -v -7d +"%d/%m/%Y")

在我运行脚本时进行这些更改后,它会输出:

sh kitchen.sh -file=/home/rafael/data-integration/Job_Oracle_MySql.kjb -param:TABELA=tabela1 -param:HOJE=18/12/2015 -param:SEMANAPASSADA=11/12/2015

这可能更接近你想要的。

于 2015-12-18T12:34:18.167 回答