我刚刚安装并配置了ApacheHive1.1.0版。然后我通过查询这个查询创建了一个表:
create table person (name1 string, surname1 string);
然后我想添加一行:
insert into person (name1, surname1) values ("Alan", "Green");
它会导致一个错误:
错误:编译语句时出错:失败:parseexception行1:20无法识别语句中“(“”name1“”,”附近的输入(state=42000,code=40000)。
但当我执行不带列列表的查询时,它可以正常工作:
insert into person values ("Alan", "Green");
问题是:如何在hiveql中指定要插入的列列表?
4条答案
按热度按时间dauxcl2d1#
根据这个bug hive-9481,从1.2.0开始,您可以在insert语句中指定列列表。语法如下:
例子:
我用Hive2.1测试了这个。它只适用于insert-into,不适用于insert-overwrite
我不知道为什么apachewiki页面语言手册dml中没有提到这个语法
https://issues.apache.org/jira/browse/hive-9481
knpiaxh12#
配置单元当前不支持此类功能,请参阅此处的详细信息
必须提供完整的值列表。
r6l8ljro3#
配置单元不支持行级插入、更新和删除。
但是,在创建表之后,您可以将所有数据放在一个文件中,并将该文件加载到配置单元表中。这样就可以将数据插入到配置单元表中。有关命令,请参阅配置单元手册。
在配置单元中执行插入/更新和删除有一些变通方法。但不建议这样做。
4bbkushb4#
插入上述查询中的特定列:
在hive 2.0中受支持