我在hive中创建了一个表。
create table demo(no int, name string)
INSERT demo values (1,'haris')
但是当我在该表中插入值时,它会显示以下错误。
FAILED: Parse Error: line 2:0 mismatched input 'INSERT' expecting EOF near ')'
并尝试过这个
INSERT OVERWRITE TABLE demo
PARTITION (no = 1, name = 'Hana')
FAILED: Parse Error: line 4:0 cannot recognize input near 'PARTITION' '(' 'country' in select clause
是否有任何人帮助我?我如何在蜂巢中插入。如果可能,请告诉我有关外部文件的信息吗?
答案 0 :(得分:2)
这样做:
hive> LOAD DATA INPATH '/path_of_the_file_to_insert' INTO TABLE demo;
外部文件是指外部表格吗?请正确格式化您的问题,以便正确显示。谢谢。
回应你的评论:
Hive不提供记录级插入。您可以从查询生成新表或将查询结果输出到文件。所以我不认为像
insert into table_name (id, name) VALUES (12,"xyz);
是可能的。
当您谈到在Hive中插入时,您有两个选择:
Loading files into tables
Inserting data into Hive Tables from queries
加载操作只是将数据文件移动到与Hive表对应的位置的复制/移动操作,而插入意味着使用insert子句将数据插入表中。
LOAD语法:
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
示例:
LOAD DATA INPATH '/path/to/file/test.csv' INTO TABLE table_name;
INSERT语法:
INSERT INTO TABLE tablename1 [PARTITION (partcol1=val1, partcol2=val2 ...)] select_statement1 FROM from_statement;
示例:
INSERT OVERWRITE TABLE table2 SELECT * FROM table1;
外部表:
外部表与Hive中的任何其他表一样,但外部表中您自己控制数据的创建和删除。在表创建时指定外部数据的位置。基本文件不会被复制到Hive表目录中。
CREATE EXTERNAL TABLE external_table (dummy STRING) LOCATION '/user/tom/external_table';
LOAD DATA INPATH '/user/tom/data.txt' INTO TABLE external_table;
HTH