bash脚本中的hive命令不能将文件加载到表中

时间:2014-10-30 21:42:49

标签: file hive parseexception

我正在编写一个bash脚本,除其他外,还必须创建一个hive表并将csv文件(其名称不是先验的)加载到该表中。 我已将文件foo.csv的名称导出到环境变量myfile并尝试了命令

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

甚至尝试直接输入这样的文件名

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

根本不起作用,抛出的错误与以前一样。

有没有人知道这些命令有什么问题?我可以真的感谢一些帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

文件名应放在''内:

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

在你的脚本中,你应该逃避这些符号,这样你就不会得到另一个解析异常。

另外,请查看Language Manual on loading