我正在编写一个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'
根本不起作用,抛出的错误与以前一样。
有没有人知道这些命令有什么问题?我可以真的感谢一些帮助,谢谢。
答案 0 :(得分:1)
文件名应放在''
内:
load data local inpath 'foo.csv' into table mytable
在你的脚本中,你应该逃避这些符号,这样你就不会得到另一个解析异常。