PostgreSQL 批量插入&更新数据时报错(ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time)
参考PostgreSQL 批量插入&更新数据时报错(ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time)_张志翔的博客-CSDN博客了解pg批量插入数据主键冲突的更新数据的基本原理,就是插入的数据不能有两条以上存在主键冲突,因为插入数据是无序的,pg无法判断哪一条数据是最新的,事情交给用户自己处理====
了解pg批量插入数据主键冲突的更新数据的基本原理,就是插入的数据不能有两条以上存在主键冲突,因为插入数据是无序的,pg无法判断哪一条数据是最新的,事情交给用户自己处理
===========================分割==========================================
1.我的做法是先通过groupby去掉重复数据,测试环境去重80条左右
2.还有报错,发现插入数据集的字段比pg表字段少若干个,修正pg表结构,和插入数据集一致
新的报错
3.ERROR: null value in column "* ***” violates not-null constraint
很熟悉对不对,是的 插入对应的列中有null值,与主键不能为null冲入,但是你会发现给的样例数据里对应的字段值不是null
重点来了,pg在插入数据的时候不会根据字段名去插入到pg表对应的列,就是说一字排开,不管三七二十一,直接插入,不管是不是对应的字段
最终挑中表结构字段顺序
问题解决
注:如果采用insert into tablename select方式,则select后面的字段顺序要与pg表名顺序严格保持一致,不然会出现莫名其妙的报错
方法总比问题多,问题有时候没有看起来那么复杂,有时候很简单
昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链
更多推荐

所有评论(0)