5. 数据装载与写入
Hive 没有常规的行级数据插入、更新和删除操作。向表中写入数据,通常使用批量装载,或者直接将数据文件写入表对应的正确目录。
5.1 LOAD DATA 基本语法
LOAD DATA LOCAL INPATH '/root/file1.txt'
INTO TABLE logs
PARTITION (dt='2018-02-07', country='China');
LOCAL表示源文件位于本地文件系统;不写LOCAL时,源路径通常指 HDFS。LOAD DATA可以把数据文件装载到 Hive 表对应的分区目录。- 如果目标分区目录不存在,命令会先创建分区目录,再将数据复制或移动到该目录。
- 如果目标表不是分区表,应省略
PARTITION子句。
5.2 覆盖与追加
LOAD DATA LOCAL INPATH '/root/file1.txt'
OVERWRITE INTO TABLE logs
PARTITION (dt='2018-02-07', country='China');
- 指定
OVERWRITE:先删除目标目录中原有的数据,再装载新数据。 - 不指定
OVERWRITE:保留原数据,将新文件加入目标目录。 - 如果目标目录中已有与待装载文件同名的文件,旧的同名文件会被覆盖。
INSERT INTO 和 INSERT OVERWRITE
的区别同样是追加与覆盖:
INSERT INTO向表或分区追加数据,不会因为数据内容重复而报错。INSERT OVERWRITE覆盖目标表或目标分区中原有的数据。