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;