你有一些数据在本地,如何导入到hive表呢?hive中有一条命令load data local inpath可以完成这个任务。
假设你的表如下:
create table example (
name string,
age int,
num int,
desc string
) row format delimited fields terminated by '\t'
stored as textfile;
这个表,规定了字段之间需要用制表符来间隔,所以你的数据应该遵守这个规则。
load data local inpath '${PWD}/data' overwrite into table example;
这句话,就是从你本地文件data中导入数据到你的hive表里。
这就是最简单的数据导入方法,当然了,由于text的格式查询效率比较低,我们可以结合temporary表来从本地数据导入到你规定格式的hive表中。
create tmporary table if not exists tmp_example (
name string,
age int,
num int,
desc string
) row format delimited fields terminated by '\t'
stored as textfile;
load data local inpath '${PWD}/data' overwrite into table tmp_example;
create table if not exists example (
name string,
age int,
num int,
desc string
) stored as orcfile;
insert overwrite table example select * from tmp_example;
在上面这个比较长的SQL语句里面,使用临时表来接入本地数据,然后导入orc格式的正式表里,后者具有更好的查询效率,而且当这个语句执行完毕,临时表也被删除了,不会占用存储空间。