Hive导入数据
(1)从本地文件导入
load data local inpath 'test.txt' into table test;
(2)从HDFS导入
load data inpath '/data/test.txt' into table test;
(3)从Hive表导入
insert into table test partition (date) select id, name from test1;
into也可以改为overwrite,即覆盖的意思
Hive也支持多表插入
from test insert into table test1 partition(date) select id, name insert into table test2 select id, name,date where date = '201904';
(4)复制表
create table test1 as select id, name from test;
Hive导出数据
(1)导出到本地
insert overwrite local directory '/home/test' select * from test;
注意:和导入数据到Hive不一样,不能用 insert into 来将数据导出
一般会通过如下操作将几个文件合并一个:
cat /home/test/* >> /home/test.txt
不过,一合并可能会发现非常坑,数据没有使用分隔符分割,根本无法选取,因此在导出本地时候,可以指定分隔符
insert overwrite local directory '/home/test' row format delimited fields terminated by ',' select * from test;
(2)导出到HDFS
insert overwrite directory '/data/test' select * from test;
(3)导出到Hive
insert into table test partition (age='25') select id, name from test;
(4)用-e 或 -f(不建议)
hive -e "select * from test" >> local/test.txt
第四种尽量别用,有可能会把日志数据也输入到本地文件了