1导入方式
1).指定location
create table tb_log2(
id int ,
name string
)
row format delimited fields terminated by ","
location '/data/log/' ; -- 指定了路径,路径的文件会被直接加载到table中
2).可以将结构化数据直接put到表目录中 mv到指定的目录
1.在网址http://linux01:9870中查到自己想要将数据传入的表格的位置
通常在/user/hive/warehouse路径下
2.把数据文件put进去
hdfs dfs -put /data/user.tsv /user/hive/warehouse/tb_log;
3). 使用load语法
load data local inpath "/data/user3.csv" into table tb_user ; --在本地中传出数据;底层就是put
load data inpath "/user5.csv" into table tb_user ; -- 在hdfs中传数据,底层move-- 追加数据
load data inpath "/user3.csv" overwrite into table tb_user ; -- 底层move
4).基本模式插入
hive (default)> insert into table student partition(month='201709') values(1,'wangwu');
此种方式不常用,会产生大量的小文件
5).import数据到指定表中
注意:先用export导出后,再将数据导入。
hive (default)> import table student2 from '/user/hive/warehouse/export/student';
2.hive数据的导出
1.export方式导出
export table tb_name to 'HDFS_PATH'; 将数据导出到hdfs的某个路径中
2.普通的文本文件数据,可以用get方法直接将数据导出到root用户下
hive> dfs -get /dfs_path; 导出到了root用户下([root@linux01 ~])
3.不开启终端,执行sql语句
[root@linux01 ~] hive -e "SQL" >> 输出路径
4.insert导出
1.将查询的结果导出到本地
hive (default)> insert overwrite local directory '/opt/module/datas/export/student'
select * from student;
2.将查询的结果格式化导出到本地
hive(default)>insert overwrite local directory '/opt/module/datas/export/student1'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' select * from student;
3.将查询的结果导出到HDFS上(没有local)
hive (default)> insert overwrite directory '/user/doit/student2'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from student;