在创建数据表的过程中,Hive表创建完成后,需要将一些数据导入到Hive表中,或是将Hive表中的数据导出。
一、将数据导入Hive表
Hive表的数据导入主要有三种方式:
- 从本地文件系统中导入数据到Hive表中
 - 从HDFS上导入数据到Hive表中
 - 从别的表中查询出相应的数据导入到Hive表中
 - 在创建Hive表时通过从别的表中查询并插入的方式将数据导入到Hive表中
 
1、从本地文件系统中导入数据到Hive表中
 
格式:
 
LOAD DATA LOCAL INPATH "path" [OVERWRITE] INTO TABLE tablename; 
 
 
 
 
假设此时有一个文本文件存储在本地,地址为:“ 
 /home/training/zzy_scripts/studentno_data.txt 
 ”,需要将这个本地文件导入到 
 Hive 
 表 
 studentno 
 中。
 

 
查询数据库中的文件
 

 
已经将制定的文件导入到 Hive 表中。
 
2、从HDFS上导入数据到Hive表中
 
从 HDFS 导入数据的格式与从本地导入数据的格式差不多,其格式为:
 
LOAD DATA INPATH "path" OVERWRITE INTO TABLE tablename; 
 
所不同的是少一个 
 LOCAL 
 。 
3、从别的表中查询出相应的数据导入到Hive表中
 
从别的表中查询出相应的数据导入到 Hive 表中的格式为:
 
INSERT OVERWRITE TABLE tablename_1 PATITION() SELECT ... FROM tablename_2 WHERE ... 
 
其中,PATITION指的是指定分区,WHERE是查询的条件,如下面的例子: 

 
Hive 表将查询的工作转换成 MapReduce 程序执行,执行完成后返回成功的标志。我们查询表 studentnotmp :
 

 
4、在创建Hive表时通过从别的表中查询并插入的方式将数据导入到Hive表中
 
格式 (CTAS) :
 
CREATE TABLE IF NOT EXISTS tablename1...AS SELECT ... 
 
如下面的例子: 

 
注意: Hive 表 studentnotmp1 不能指定列。
 
二、从Hive表中将数据导出
对于Hive表中的数据,有时需要将其导出,或是导出到本地,或是导出到HDFS,再其次便是将其导入到另一张Hive表中。
1、导出到本地文件系统
 
格式:
 
INSERT OVERWRITE LOCAL DIRECTORY ... SELECT * FROM ...; 
 
 
 例如: 

 
 
2、导出到HDFS
 
格式:
 
INSERT OVERWRITE DIRECTORY ... SELECT * FROM ...;  
3、导出到Hive的另一张表中
 
与从别的表中查询出相应的结果插入到表中类似,其 格式为:
 
INSERT INTO ...  
 
  










