【问题标题】:Hive copy data from one partition to anotherHive 将数据从一个分区复制到另一个分区
【发布时间】:2020-08-18 19:52:09
【问题描述】:

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

有这样的命令吗

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

【问题讨论】:

    标签: hadoop hive hiveql


    【解决方案1】:

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

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

    注意:不要在 select 语句中包含分区列。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-21
      • 2016-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多