当前位置: 首页 > 知识库问答 >
问题:

节点。js和postgres批量upsert还是其他模式?

仇航
2023-03-14

我正在使用Postgres、NodeJS和Knex。

我有以下情况:

>

  • 具有唯一字段的数据库表
  • 在NodeJS中,我有一个对象数组,我需要:

    一种。如果表不包含唯一id,则插入新行,或

    b.如果表包含唯一 ID,请更新其余字段。

    据我所知,我有三种选择:

    1. 执行查询以检查数据库中是否存在每个,并根据响应执行更新或插入。这会消耗资源,因为每个数组项都有一个调用,还有一个插入或更新。
    2. 删除数组中具有 id 的所有行,然后执行插入。这意味着只有2个操作,但自动增量领域将继续增长。
    3. html" target="_blank">执行更新,因为 Postgres 9.5 支持它。批量更新似乎有效,并且只有对数据库的调用。

    纵观我所知的选项,upsert似乎是最合理的选择,但它有任何缺点吗?

  • 共有1个答案

    欧阳乐生
    2023-03-14

    更新插入是一种常见的方法。

    另一种方法是使用单独插入/更新操作,这样可能会更快:

    >

  • 定义现有行从t中选择id,其中id在(对象ID)(*)

    按 (*) 结果更新现有行

    按 (*) 筛选数组并大容量插入新行。

    在此处查看同一问题的更多详细信息

  •  类似资料:
    • 我在CentOS 6上使用Postgres 9.5。我有下表(DDL)。 现有的4行数据。 当我尝试执行以下UPSERT时,我碰到了一个错误。 错误是"ERROR:没有与ON CONFLICT规范匹配的唯一或排除约束"。 有人能帮我指出我的错误以及如何解决它吗?

    • 使用大型数据集进行批量更新的最佳方法是什么?我知道PostgreSQL现在支持upserts,但我不确定如何在SQLAlchemy中做到这一点。

    • 你可以在 属性检查器 里修改节点和组件,也能在脚本中动态修改。动态修改的好处是能够在一段时间内连续地修改属性、过渡属性,实现渐变效果。脚本还能够响应玩家输入,能够修改、创建和销毁节点或组件,实现各种各样的游戏逻辑。要实现这些效果,你需要先在脚本中获得你要修改的节点或组件。 在本篇教程,我们将介绍如何 获得组件所在的节点 获得其它组件 使用 属性检查器 设置节点和组件 查找子节点 全局节点查找 访问

    • 你可以在 属性检查器 里修改节点和组件,也能在脚本中动态修改。动态修改的好处是能够在一段时间内连续地修改属性、过渡属性,实现渐变效果。脚本还能够响应玩家输入,能够修改、创建和销毁节点或组件,实现各种各样的游戏逻辑。要实现这些效果,你需要先在脚本中获得你要修改的节点或组件。 在本篇教程,我们将介绍如何 获得组件所在的节点 获得其它组件 使用 属性检查器 设置节点和组件 查找子节点 全局节点查找 访问

    • 问题内容: 我正在尝试捕获WebBrowser控件的内容。可以完美地工作,但是WebBrowser控件的文档中不支持它。我一直在尝试寻找另一种捕获WebBrowser控件的内容并将其保存到本地图像文件的方法。 是否有人有任何变通办法或其他方法将WebBrowser控件的内容保存到本地图像文件? 问题答案: Control.DrawToBitmap并不总是能正常工作,因此我诉诸于以下提供更一致结果的

    • 问题内容: 在我的项目中,我需要在运行时在数据库之间切换。我尝试使用Hibernate,但是卡在一个地方,我需要在数据库中映射对象和表。问题是,我有几个带前缀的表:documents2001,documents2002 …据我了解,我在运行时无法将类与表进行映射。我尝试使用iBatis,但问题出在运行时更改数据库。在iBatis中,这很难做到。 也许一些建议,我应该使用什么? 我的要求: 能够在运