配置单元将数据从一个分区复制到另一个分区

问题描述

我有一个按日期分区的配置单元表。我有日期“ 2020-08-18”的数据。我想将相同的数据复制(复制)到另一个分区。

是否有这样的命令

SELECT * FROM table_a WHERE date = "2020-08-18" INTO table_a WHERE date = "2020-08-10" 

解决方法

以下查询可能对您有所帮助

INSERT OVERWRITE TABLE table_a PARTITION (odate="2020-08-18") 
select empdate,empvalue from table_a where odate='2020-08-10';

注意:不要在select语句中包括partition列。

create table if not exists table_a (empdate string,empvalue string) PARTITIONED BY 
(odate string) row format delimited fields terminated by ',' stored as textfile;

INSERT OVERWRITE TABLE table_a PARTITION (odate="2020-08-10") 
values ('101001','A'),('200101','B'),('100619','C'),('110707','D');

hive> select * from table_a;
OK
101001  A       2020-08-10
200101  B       2020-08-10
100619  C       2020-08-10
110707  D       2020-08-10

-- dont include the odate column in the select statement otherwise it will lead
-- to  Cannot insert into target table because column number/types are different
-- '"2020-08-18"': Table insclause-0 has 2 columns,but query has 3 columns error.


INSERT OVERWRITE TABLE table_a PARTITION (odate="2020-08-18") 
select empdate,empvalue from table_a where odate='2020-08-10';

hive> select * from table_a;
OK
101001  A       2020-08-10
200101  B       2020-08-10
100619  C       2020-08-10
110707  D       2020-08-10
101001  A       2020-08-18
200101  B       2020-08-18
100619  C       2020-08-18
110707  D       2020-08-18

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...