【问题标题】:sequelize postgress bulk insert ignore if existsequelize postgres bulk insert 如果存在则忽略
【发布时间】:2020-05-14 17:45:33
【问题描述】:

我有以下代码

await tbl.bulkCreate(response.data, {
                                ignoreDuplicates: true
                            });

在 response.data 中有一个对象数组。

我希望它应该检查所有发现重复的字段不要插入, 如果 Id 存在,我认为它的工作原理忽略

我认为这个 ignoreDuplicates 不起作用,因为 id 字段对于新记录总是新的

无论如何我可以说检查某些字段,如果存在则不要插入,否则插入

谢谢

【问题讨论】:

    标签: node.js postgresql orm sequelize.js


    【解决方案1】:

    忽略主键的重复值? (MSSQL 或 Postgres

    {updateOnDuplicate : true}
    

    尝试使用复合键

    queryInterface.addConstraint('Items', ['col1', 'col2'], {
      type: 'unique',
      name: 'custom_unique_constraint_name'
    });
    

    【讨论】:

    • 我需要检查其他字段的重复项,而不是主键
    • 不,我的情况是我有 5 列从另一个资源获取,我正在使用批量插入这 5 列,现在在表中我有一个 id 列,它是 AI 与其他 5 列的主键。因此,如果我对另一个源提出多个请求,它会继续插入,因为在插入时正在生成 id 并且它始终是新的,并且其他 5 列即将到来是重复的,但由于是新的,它会在表中插入重复记录
    • 您可以定义composite_key 或使用WHERE IN 从原始查询中查找请求的数据并删除重复项,然后执行bulkCreate。使用 WHERE IN 的方式会更容易。如果你愿意,我有一个相同的演示,我可以分享。
    • 我将通过分页上传数百万条记录,所以操作这将是一个问题
    猜你喜欢
    • 1970-01-01
    • 2019-08-30
    • 2016-06-11
    • 2022-01-18
    • 1970-01-01
    • 2012-03-28
    • 2017-02-15
    • 2017-02-11
    • 2021-11-18
    相关资源
    最近更新 更多