0

我正在编写一个 bash 脚本,除其他外,它必须创建一个配置单元表并将一个 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'

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

有人知道这些命令有什么问题吗?我真的很感激一些帮助,谢谢。

4

1 回答 1

1

文件名应该放在里面''

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

在您的脚本中,您可能应该转义这些符号,这样您就不会得到另一个解析异常。

另外,在加载时查看语言手册

于 2014-10-31T06:22:27.400 回答