跳过hive中的连字符



我在HIVE CLI中执行了一个查询,应该生成一个外部表。create EXTERNAL TABLE IF NOT EXISTS (code int, area_name string)male_60_64结构、male_above_65结构)以't'结尾的行格式分隔字段;"

它工作得很好,但如果我用"-"代替"_",我将面临错误。

"create EXTERNAL TABLE IF NOT EXISTS (code int, area_name string, male-60-64)c1: string, x-user: string>) ROW FORMAT DELIMITED FIELDS以't'结尾;"

Addy的回答已经提供了如何在列名中使用连字符的示例。以下是根据文档描述的在不同版本的Hive中如何工作的补充内容:

  • 仅在Hive 0.12及更早的版本中表和中允许使用字母、数字和下划线字符列名。
  • 在Hive 0.13及以后的版本中,列名可以包含任意Unicode字符(参见HIVE-6013)。指定的任何列名在反引号内(')按字面意思处理。在一个反勾字符串中,使用双反号(' ')来表示反号字符。撇号Quotation还支持为表和使用保留关键字列标识符。
  • 恢复到0.13.0之前的行为和限制列名称为字母数字和下划线字符,请设置配置属性hive.support. quotes .identifiers为none。在在这个配置中,反打勾的名称被解释为常规名称表达式。有关详细信息,请参见列中支持引号标识符名字。

除此之外,您还可以在那里找到STRUCT的语法,它应该可以帮助您解决您在注释中提到的错误:

struct_type: STRUCT

更新:

注意,在复杂类型(即结构体内部)中似乎不支持连字符。

尝试带引号的标识符

create table hassan( code int, `area_name` string, `male-60-64` STRUCT, `male-above-65` STRUCT) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't';

参考:

https://issues.apache.org/jira/secure/attachment/12618321/QuotedIdentifier.html

相关内容

  • 没有找到相关文章

最新更新