2012-08-07 3 views
1

Ниже приведен сценарий моей оболочки, из которого я запускаю свой запрос на удержание. В этом я вычисляю дату вчерашнего дня, и я передаю, что вчерашняя дата в предложении 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' 

Я бегу выше сценарий, как this-

sh -x test.sh 

Есть ли что-то не так с тем, как я передаю, что DATE_YEST date в пункте где?

+0

Попробуйте повторить ваш оператор выбора. Посмотрите, выглядит ли это правильно. – Chimera

+0

«Но этот запрос не работает для меня». -> Это та часть, о которой вы должны уточнить. Какое сообщение об ошибке вы получаете? – mtk

ответ

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\"" 
Смежные вопросы