1

下面是我运行 Hive 查询的 shell 脚本。在此我正在计算昨天的日期,并且我在 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 date在 where 子句中传递它的方式有问题吗?

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

如果您需要选择周围的引号,请使用:

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