目录
使用datax postgresqlwriter组件upsert数据时报错
error:there is no unique or exclusion constraint matching the ON CONFLICT specification
datax 自定义json postgresqlwriter中json新增writeMode
"writeMode": "update (id)"
原来是因为pg5.0以上的版本的新特性,根据约束,存在才更新,不存在则插入,而且字段属性必须是unique,否则还会报错
--为pg目标表添加约束
ALTER TABLE public.pg_table_name
ADD constraint "upsert_pkey" unique (id);
注意:unique中字段可以为多个
本来以为到这里已经解决了,结果又发现了新坑。。。
加完约束后在执行居然又报错 null value in column "col_name" violates not-null constraint
我竟无语凝噎,然后又去将pg表所有字段给了默认值,才成功了。
最后总结一下,约束加不加我测试了都无所谓,但是所有字段都必须要设定默认值,这个配好之后uodate模式就能执行成功了!!!