Hive插入显示错误

时间:2013-06-11 12:23:37

标签: hadoop hive

我在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

是否有任何人帮助我?我如何在蜂巢中插入。如果可能,请告诉我有关外部文件的信息吗?

1 个答案:

答案 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