跳过配置单元中的连字符

jdgnovmf  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(352)

我在hive cli中执行了一个查询,该查询应生成一个外部表。“创建外部表如果不存在hassan(code int,area_name string,male_60_64 struct,male_above_65 struct)行格式分隔字段,以'\t';'结尾
它工作得很好,但如果我用“-”而不是“\”,我将面临错误。
“如果不存在创建外部表hassan(code int,area_name string,male-60-64 structc1:string,x-user:string)行格式分隔字段以'\t';”
任何帮助都将不胜感激。

vxqlmq5t

vxqlmq5t1#

addy的答案已经提供了一个如何在列名中使用连字符的示例。根据文档,下面是一个附加说明,它描述了如何在不同版本的hive中工作:
在hive0.12及更早版本中,表名和列名中只允许使用字母数字和下划线字符。
在hive 0.13及更高版本中,列名可以包含任何unicode字符(请参阅hive-6013)。在backticks(`)中指定的任何列名都按字面意义处理。在反记号字符串中,使用双反记号(``)表示反记号字符。backtick引号还支持对表和列标识符使用保留关键字。
要恢复到0.13.0之前的行为并将列名限制为字母数字和下划线字符,请将配置属性hive.support.quoted.identifiers设置为none。在此配置中,反勾选的名称被解释为正则表达式。有关详细信息,请参阅在列名中支持带引号的标识符。
除此之外,您还可以在此处找到struct的语法,这将有助于您解决注解中提到的错误:
结构类型:结构<列名称:数据类型[注解列注解],…>

更新:

请注意,复杂类型中的连字符(因此在结构中)似乎不受支持。

tmb3ates

tmb3ates2#

尝试引用标识符 create table hassan( code int,area_namestring,male-60-64STRUCT,male-above-65STRUCT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; 参考文献:
https://issues.apache.org/jira/secure/attachment/12618321/quotedidentifier.html

相关问题