存在则更新,不存在则写入,如何处理

  有一个分布式表,当我往其中写入一个新的内存表时,不确认里面的记录是否已经存在,如果存在就更新,不存在就插入,应该如何处理。

请先 登录 后评论

1 个回答

YcHan韩迎春

这个可以使用upsert!函数,具体如下:

首先建立分布式数据库,并第一次写入数据

if (existsDatabase("dfs://rangedb128"))
{
    dropDatabase("dfs://rangedb128")
}
db=database("dfs://rangedb128", VALUE,  0..10)

ID=0 1 2 2
x=0.1*0..3
t=table(ID, x)

pt=db.createPartitionedTable(t, `pt, `ID)
pt.append!(t)
select * from pt

结果如下:

ID   x

0    0

1   0.1

2   0.2

2   0.3

第二次写入数据,并查看结果
t1=table([1,5] as ID, [111,555] as x)
upsert!(pt, t1, keyColNames=`ID)
select * from pt;
结果如下
ID  x
0   0
1   111
2   0.2
2   0.3
5   555
可以发现ID为1的值更新了,ID为5的值新增了。

请先 登录 后评论