You need to enable JavaScript to run this app.
导航
重写表或表的某些分区
最近更新时间:2024.09.20 18:03:58首次发布时间:2024.09.20 18:03:58

INSERT OVERWRITE ... 语句用于重写表或表的某些分区,将数据以原子性操作的方式写入。在分区替换时,会自动过滤不符合指定分区的导入数据。

基本语法

INSERT OVERWRITE TABLE table_name
    [ PARTITION (p1,... | *) ]
    [ (COLUMN [,...]) ]
    { VALUES ([,...] ), ([,...]) | QUERY }

参数说明

  • table_name:需要重写的目标表名。
  • PARTITION:需要重写的分区,可以指定一个或多个分区,使用逗号分隔,最外层需要使用括号。如果不写partition字段,则为重写整表。
  • COLUMN:需要写入目标表的列,可以指定一个或多个列,使用逗号分隔,最外层需要使用括号。
  • VALUES:需要写入的值列表。
  • QUERY:需要写入的查询query

使用示例

  • 单分区键的分区重写:
INSERT OVERWRITE test.insert_overwrite_t PARTITION (1) SELECT * FROM test.insert_overwrite_s WHERE d = 1;
  • 单分区键的分区VALUES重写:
INSERT OVERWRITE test.insert_overwrite_t PARTITION (2) VALUES (2,6), (3,3);
  • 单分区键的多分区重写:
INSERT OVERWRITE test.insert_overwrite_t PARTITION (1,2) SELECT * FROM test.insert_overwrite_s;
  • 多分区键的多分区重写:
INSERT OVERWRITE test.insert_overwrite_t PARTITION (('1',1), ('2',2)) SELECT * FROM test.insert_overwrite_s;
  • 多分区键指定列的导入重写:
INSERT OVERWRITE test.insert_overwrite_t PARTITION (('1',1)) (s,d,n) SELECT s,d,n FROM test.insert_overwrite_s;
  • 整表重写:
INSERT OVERWRITE test.insert_overwrite_t SELECT * FROM test.insert_overwrite_s;