2012-08-07 55 views
1

以下是我正在運行Hive查詢的shell腳本。在這裏,我計算了昨天的日期,並且我在where子句中傳遞了昨天的日期。但是,該查詢不適合我。從shell腳本傳遞日期到查詢

#!/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子句中的方式嗎?

+0

嘗試呼應你的SELECT語句。看看它看起來是否正確。 – Chimera 2012-08-07 23:13:17

+0

「但是,該查詢不適合我。」 - >這是你必須詳細闡述的部分。你會得到什麼錯誤信息? – mtk 2012-08-08 00:11:25

回答

2

試試這個:

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