0

Pentaho Kettle の入力ステップで次のコードを実行しています。

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

ただし、このシェルスクリプトを介してジョブを実行すると:

#!/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

問題はシェル スクリプトのエラーであり、Pentaho や Table Input Step のエラーではありません。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=

シェルスクリプトの問題は

  1. 大文字と小文字を区別。$TABELAと置き換えます$tablea
  2. 私にとっては日付の呼び出し方法が間違っていますが、これはあなたが提供していないOSに依存します。私は書く必要があります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 に答える