【问题标题】:Pass date from shell script to query将日期从 shell 脚本传递给查询
【发布时间】:2012-08-07 23:05:12
【问题描述】:

下面是我运行 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

我在 where 子句中传递 DATE_YEST date 的方式有问题吗?

【问题讨论】:

  • 尝试回应您的选择语句。看看它看起来是否正确。
  • “但是那个查询对我不起作用。” --> 这是您必须详细说明的部分。您收到什么错误消息?

标签: linux shell unix solaris hive


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-06
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多