第一种为insert
insert overwrite table mytable partition (dt='20150617') select ....
上面这个语句是hive的insert语句,和数据库的sql相同点是同样使用insert向表中插入数据
插入时注意overwrite为覆盖,into为追加
同样应该注意hive的insert语句必须有table这个关键字,而普通数据库直接写表名就行,且如果是分区表需要在表名后跟分区的指定,追加表与查询结果列名必须相同且顺序一致,不同时要起别名,不然会报错的
insert语句常用作hive的表与表之间数据的交互
第二种为load
LOAD DATA LOCAL INPATH '/path' OVERWRITE INTO TABLE mytable PARTITION (dt='20200901')
load语句的特点是使用方便,但是数据的样式上没有insert语句灵活
load语句是用来加载本地或hdfs上的文件的,其中LOCAl就是本地的意思,如果你要加载hdfs上的数据把LOCAL去掉就好
OVERWRITE 同样是覆盖的意思,如果你只是要追加写去掉它就好
load语句在你加载文件夹的时候如果下面有同名文件时,那么会被从命名
要注意的是在0.14以后的hive其实很少用load了,因为有了更好用的数据抽取工具
切记
无论哪种方式加载数据,如果不是分区表,那么就不要有分区的关键字