1

以下は、Hiveクエリを実行しているシェルスクリプトです。これでは、昨日の日付を計算しており、where句でその昨日の日付を渡します。しかし、そのクエリは私には機能していません。

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
hive -S -e 'SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST'

私はこのような上記のスクリプトを実行しています-

sh -x test.sh

DATE_YEST datewhere句でそれを渡す方法に何か問題がありますか?

4

1 に答える 1

3

これを試して:

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
echo "SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST"

出力は次のようになります。

20120806
SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806

また、selectの前後に引用符が必要な場合は、次を使用してください。

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
echo "\"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST\""

出力は次のようになります。

20120806
"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=20120806"

引用符が必要だとすると、スクリプトは次のようになります。

#!/bin/bash
DATE_YEST=`TZ=GMT+48 date +%Y%m%d`
echo $DATE_YEST
hive -S -e "\"SELECT * FROM PDS_ATTRIBUTE_DATA_REALTIME WHERE dt=$DATE_YEST\""
于 2012-08-07T23:18:39.110 に答える