Hive——HiveQL数据操作
1.向管理表中插入数据
Hive没有行级别的数据插入,数据更新和删除操作,那么往表中装载数据上的唯一途径就是使用一种数据装载操作,或者通过其他方式仅仅将文件写到正确目录下。
0: jdbc:hive2://192.168.142.92:10000/default> show PARTITIONS employees;
+-----------------------------+
| partition |
+-----------------------------+
| country=China/state=Xian |
| country=USA/state=Illinois |
+-----------------------------+
#向分区表中插入数据
LOAD DATA LOCAL INPATH '/root/Illinois-emps'
OVERWRITE INTO TABLE employees
PARTITION (country="US",state="Illinois")
如果分区目录不存在会优先创建分区目录,然后在将数据拷贝到该目录下,如果目标表不是分区表,应当省略PARTITION子句。
LOCAL关键字指明了是本地文件系统路径;如果数据源存在与本地文件系统中,数据源将会被拷贝到目标位置,如果没有LOCAL关键字,则数据源位于HDFS文件系统中,数据源将会被移动到目标位置。
0: jdbc:hive2://pseudo01:10000/default> desc stus;
+--------------------------+-----------------------+-----------------------+
| col_name | data_type | comment |
+--------------------------+-----------------------+-----------------------+
| id | int | |
| name | string | |
| cls | string | |
| | NULL | NULL |
| # Partition Information | NULL | NULL |
| # col_name | data_type | comment |
| | NULL | NULL |
| cls | string | |
+--------------------------+-----------------------+-----------------------+
准备数据:
ClsA.txt
1101,张三
1102,李四
1103,王五
1104,赵六
1105,翠花
----------------------------------------------------------------------------------------------------------
ClsB.txt
1201,胡一刀
1202,胡一筒
1203,楚留香
1204,张翼德
1205,张承恩
1206,王晓二
----------------------------------------------------------------------------------------------------------
ClsC.txt
1301,时迁
1302,武松
1303,李逵
1304,宋江
1305,林冲
向管理表中插入数据
0: jdbc:hive2://pseudo01:10000/default> LOAD DATA LOCAL INPATH '/root/cls/ClsA.txt' INTO TABLE stus PARTITION (cls='ClsA');
No rows affected (4.364 seconds)
0: jdbc:hive2://pseudo01:10000/default> LOAD DATA LOCAL INPATH '/root/cls/ClsB.txt' INTO TABLE stus PARTITION (cls='ClsB');
No rows affected (0.977 seconds)
0: jdbc:hive2://pseudo01:10000/default> LOAD DATA LOCAL INPATH '/root/cls/ClsC.txt' INTO TABLE stus PARTITION (cls='ClsC');
No rows affected (0.916 seconds)
0: jdbc:hive2://pseudo01:10000/default> SELECT id,name,cls FROM stus;
+-------+-------+-------+
| id | name | cls |
+-------+-------+-------+
| 1101 | 张三 | ClsA |
| 1102 | 李四 | ClsA |
| 1103 | 王五 | ClsA |
| 1104 | 赵六 | ClsA |
| 1105 | 翠花 | ClsA |
| 1201 | 胡一刀 | ClsB |
| 1202 | 胡一筒 | ClsB |
| 1203 | 楚留香 | ClsB |
| 1204 | 张翼德 | ClsB |
| 1205 | 张承恩 | ClsB |
| 1206 | 王晓二 | ClsB |
| 1301 | 时迁 | ClsC |
| 1302 | 武松 | ClsC |
| 1303 | 李逵 | ClsC |
| 1304 | 宋江 | ClsC |
| 1305 | 林冲 | ClsC |
+-------+-------+-------+
16 rows selected (0.539 seconds)
0: jdbc:hive2://pseudo01:10000/default> dfs -ls -R /user/hive/warehouse/stus;
+----------------------------------------------------+
| DFS Output |
+----------------------------------------------------+
| drwxr-xr-x