`partitioned by (dt string)`分区
```mysql
create table t1(id int, name string) partitioned by (country string) row format delimited fields terminated by ',';
```
分区字段不能与已有字段重复
```
1,Apollo
2,Paul
```
将数据放入`/user/hive/warehouse/gosuncn.db/t1`中会发现,此时并不会映射成功。
此时,就不能用`hadoop fs -put 1.txt /user/hive/warehouse/gosuncn.db/t1`来放置数据了。
在Hive命令行中执行:
```mysql
LOAD DATA local INPATH '/root/1.txt' INTO TABLE t1 partition(country='USA');
```
加local表示加载Linux文件系统的文件,不加表示加载hdfs上的文件。
```mysql
select * from t1;
```
```
+--------+----------+-------------+--+
| t1.id | t1.name | t1.country |
+--------+----------+-------------+--+
| 1 | Apollo | USA |
| 2 | Paul | USA |
+--------+----------+-------------+--+
```
在Hive命令行中执行:
```mysql
LOAD DATA local INPATH '/root/1.txt' INTO TABLE t1 partition(country='CHINESE');
```
```
+--------+----------+-------------+--+
| t1.id | t1.name | t1.country |
+--------+----------+-------------+--+
| 1 | USA | CHINESE |
| 2 | China | CHINESE |
| 1 | Apollo | USA |
| 2 | Paul | USA |
+--------+----------+-------------+--+
```
分区字段是一个虚拟的字段,不存放任何数据。
多分区表就是文件夹里建文件夹。