1 建表的时候指定location 结构化数据的位置文件夹 (外部表)
create external table tb_t1(
id int,
name string,
age int,
gender string
)
row format delimited fields terminated by ","
location "hdfs://linux01:8020/data/log";
2 可以将结构化数据直接put到表目录中 mv到指定的目录
- 表的原数据
hdfs dfs -put user.csv /data/log
- 将文件移到表目录后
3 使用load语法
- 需要添加的文件信息
- 从本地添加信息 --底层就是put
load data local inpath "/log/user2.csv" into table tb_t1 ;
- 查看表信息 添加成功
- 从HDFS中添加信息 --底层move
load data inpath "/user5.csv" into table tb_user ;
- 将文件覆盖写入表中 --底层move
load data inpath "/user3.csv" overwrite into table tb_user ;
4 使用insert添加
使用insert直接添加数据
不建议使用 会产生很多小文件
- 表的原数据
- 添加表信息
insert into table tb_t1 values(666,'vvv',11,'M');
- 添加后的表信息
使用insert,把一个表的数据加到另一个表中
-- 注意 表的结构和查询的结果字段 个数 数据类型 属性一致
- 原表信息
- 将表 tb_s2的数据添加到tb_s中去
insert into tb_s select * from tb_s2;
- 查看数据
5. import导入指定export的数据
create table tb_log2 like tb_log ; -- 根据已有的表结构建表
export table tb_log to
'/user/hive/warehouse/export/tb_log';
import table tb_log2 from
'/user/hive/warehouse/export/tb_log';
+-------------+---------------+--------------+-----------------+
| tb_log2.id | tb_log2.name | tb_log2.age | tb_log2.gender |
+-------------+---------------+--------------+-----------------+
| 5 | zss | 23 | M |
| 1 | zbz | 53 | M |
| 2 | ycy | 33 | F |
| 3 | gdg | 63 | M |
| 4 | lyf | 43 | F |
+-------------+---------------+--------------+-----------------+