`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 |
+--------+----------+-------------+--+
```
分區字段是一個虛擬的字段,不存放任何數據。
多分區表就是文件夾里建文件夾。