2014-10-30 4 views
0

Я пишу сценарий bash, который, между прочим, должен создать таблицу улей и загрузить файл csv (имя которого неизвестно априори) в эту таблицу , я экспортировал имя файла foo.csv в переменное окружении myfile и попробовал командуКоманда hive в скрипте bash не загружает файл в таблицу

hive --hiveconf mf=$myfile -e 'set mf; set hiveconf:mf; load data local inpath ${hiveconf:mf} into table mytable' 

возвращает ошибку

FAILED: ParseException line 1:23 mismatched input 'foo' expecting StringLiteral near 'inpath' in load statement 

Я уже пробовал использовать абсолютный путь к файлу, и это не будет работать: если путь /mypath/foo.csv ошибка будет

FAILED: ParseException line 1:23 mismatched input '/' expecting StringLiteral near 'inpath' in load statement 

Даже tryi нг непосредственно поставить имя файла, как этот

hive -e 'load data local inpath foo.csv into table mytable' 

не работает на всех, и выброшенные ошибка такая же, как и раньше.

Есть ли у кого-нибудь идеи о том, что не так с этими командами? Я мог бы действительно ценят некоторую помощь, спасибо.

ответ

1

Имя файла должен быть размещен внутри '':

load data local inpath 'foo.csv' into table mytable 

В вашем сценарии вы должны, вероятно, избежать этих символов, так что вы не получите еще одно исключение синтаксического анализа.

Также смотрите Language Manual on loading

Смежные вопросы