一、INSERT OVERWRITE | INTO
行级数据插入操作
二、示例
CREATE TABLE IF NOT EXISTS `table_01` ( `id` INTEGER, `num` int, `name` STRING) USING `iceberg`INSERT INTO table_01 PARTITION(name='21') VALUES (1,2), (2,3);INSERT INTO TABLE table_01 VALUES (3,2,'abc'), (4,3,'abd');
三、MERGE INTO
行级数据更新操作,可用于替换 INSERT OVERWRITE 操作
四、语法
MERGE INTO target_table_name [target_alias]USING source_table_reference [source_alias]ON merge_condition[ WHEN MATCHED [ AND condition ] THEN matched_action ] […][ WHEN NOT MATCHED [ AND condition ] THEN not_matched_action ] […]matched_action{ DELETE |UPDATE SET * |UPDATE SET { column1 = value1 } [, …] }not_matched_action{ INSERT * |INSERT (column1 [, …] ) VALUES (value1 [, …])
五、语法
DELETE FROM table_name [table_alias] [WHERE predicate]
六、UPDATE
从Spark 3.1起支持UPDATE操作
七、语法
UPDATE table_identifier [table_alias]SET { { column_name | field_name } = expr } [, …][WHERE clause]
八、示例
UPDATE dempts SET c1 = 'update_c1', c2 = 'update_c2'WHERE ts >= '2020-05-01 00:00:00' and ts < '2020-06-01 00:00:00'UPDATE dempts SET session_time = 0, ignored = trueWHERE session_time < (SELECT min(session_time) FROM prod.db.good_events)UPDATE dempts AS t1 SET order_status = 'returned'WHERE EXISTS (SELECT oid FROM prod.db.returned_orders WHERE t1.oid = oid)