更新时间:2026-10-09 GMT+08:00
分享

向Paimon表中写入数据

INSERT INTO

INSERT INTO my_table VALUES (1, 'Alice', '2024-01-01'); 
INSERT INTO my_table SELECT * FROM source_table; 

INSERT OVERWRITE

-- 覆盖整个表
INSERT OVERWRITE my_table SELECT ...;  
-- 覆盖指定分区
INSERT OVERWRITE my_table PARTITION (key1 = value1, key2 = value2) SELECT ...; 

动态覆盖分区

Spark默认使用静态覆盖模式。启用动态覆盖需设置:

SET spark.sql.sources.partitionOverwriteMode=dynamic; 
INSERT OVERWRITE my_table VALUES (3, 'p1'); 

TRUNCATE TABLE

TRUNCATE TABLE my_table; 

UPDATE(仅主键表)

UPDATE my_table SET name = 'Alice Updated' WHERE id = 1;  
-- 更新struct字段
UPDATE t SET s.c2 = 'a_new' WHERE s.c1 = 1; 

注意:主键表不支持更新主键列的值。

DELETE(仅主键表)

DELETE FROM my_table WHERE currency = 'UNKNOWN'; 

MERGE INTO(仅主键表)

MERGE INTO target
USING source
ON target.a = source.a
WHEN MATCHED THEN
    UPDATE SET *
WHEN NOT MATCHED THEN
    INSERT *;

带条件的MERGE INTO:

MERGE INTO target
USING source
ON target.a = source.a
WHEN MATCHED AND target.a = 5 THEN
    UPDATE SET b = source.b + target.b
WHEN MATCHED AND source.c > 'c2' THEN
    UPDATE SET *
WHEN MATCHED THEN
    DELETE
WHEN NOT MATCHED AND c > 'c9' THEN
    INSERT (a, b, c) VALUES (a, b * 1.1, c)
WHEN NOT MATCHED THEN
    INSERT *;

注意:在UPDATE子句中,主键表不支持更新主键列的值。

相关文档