参考PostgreSQL 批量插入&更新数据时报错(ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time)_张志翔的博客-CSDN博客  

了解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表名顺序严格保持一致,不然会出现莫名其妙的报错  

方法总比问题多,问题有时候没有看起来那么复杂,有时候很简单 

Logo

昇腾计算产业是基于昇腾系列(HUAWEI Ascend)处理器和基础软件构建的全栈 AI计算基础设施、行业应用及服务,https://devpress.csdn.net/organization/setting/general/146749包括昇腾系列处理器、系列硬件、CANN、AI计算框架、应用使能、开发工具链、管理运维工具、行业应用及服务等全产业链

更多推荐