【问题标题】:Hive allowed column namesHive 允许的列名
【发布时间】:2021-03-08 23:09:13
【问题描述】:

我对 Hive 完全陌生。在创建 Hive 表时,我遇到了以下错误:

 >create table coffee (WINDOW int);

 Error: Error while compiling statement: FAILED: ParseException line 1:23 
 cannot recognize input near 'WINDOW' 'int' ')' in column specification 
 (state=42000,code=40000)

当我深入挖掘时,我意识到它的发生是由于我在 Hive 中创建表时使用的保留关键字“Window”。我能否获得 Hive 中不能用作列名所有保留关键字的列表。我在以下链接中获得了保留关键字列表,但我可以在创建表时使用许多列出的保留关键字作为列名。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

【问题讨论】:

  • 其实“保留字”列表取决于Hive版本,而实际上列名的保留字列表也取决于Hive版本。避免每一个“保留字”以保持安全。

标签: hive


【解决方案1】:

您可以使用反引号来创建具有这样关键字名称的表格/列

create table coffee (`WINDOW` int);

无论如何,我建议选择一个不同的名称,如果你想按列名选择数据,你还必须使用反引号

【讨论】:

    【解决方案2】:

    您不能使用保留关键字作为列名。 WINDOW 是一个反向关键字。因此,请为您的变量使用其他名称。

    编辑:使用反引号(``),如下所示:

    create table coffee ( `WINDOW` int);
    

    【讨论】:

    • 正如我在描述中提到的。我知道 WINDOW 是不能使用的保留关键字。我的问题是,如果有不能用作 Hive 列的保留关键字列表..
    • 在反引号(``)中使用保留关键字,它可以让你用作列名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 2018-04-02
    • 2018-10-25
    • 2018-04-25
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多