starrocks如何实现upsert场景,存在则更新指定列,不存在则插入记录

目前不支持upsert语句, 如何实现该场景:存在主键记录,则更新指定的几列(其余列保存不变),不存在主键记录,则直接插入记录

1赞

https://docs.starrocks.io/zh-cn/latest/loading/Load_to_Primary_Key_tables#upsert 您好 可以参考下这个功能 看是否满足您的预期

上面链接中的案例是更新表记录中的所有列,但是如果只更新表中某几个列时,其他未指定更新的列值会被设置成NULL,期望其他列值保留

例如一个表test1里面 有3个字段,a1,a2,a3, 其中a1是主键字段, 通过下面stream_load导入,更新a2字段, 但不更新a3.
curl --location-trusted -u root:123456 -H “label:1” -H “Expect:100-continue” -H “column_separator:,” -H “columns: a1,a2” -H "columns:__op ='up -XPUT http://master01:8030/api/test_db/test1/_stream_load
发现原有记录的a3 会被置空

部分列更新需要指定header,-H “partial_update:true”

什么时候可以支持使用SQL 对 表内的数据支持根据主键按列进行更新呢?

后续能做一个完整的SQL ,类似数据湖那样的 merge 的语法,不存在插入,存在更新,也可以删除都能带上对应的条件去执行。

同问, INSERT何时可以支持主键表部分更新?

:joy:同问,insert or update 部分列,怎么通过sql来实现

+1.

但预期是如果主键未冲突则插入整行信息,如果冲突只更新几个字段;指定column list会导致原本的插入功能会缺失字段 :dizzy_face: :dizzy_face: