在 OrientDB 中批量插入

Batch insert in OrientDB

我有大约 10,000 条记录(大约),我想在 Orient DB 中进行批量插入。 我的问题是一些记录已经存在于数据库中(我根据一些独特的字段决定)。所以我的批处理操作应该更新现有记录并为不存在的记录创建新记录。对于给定的批处理文件,相同的记录可能会以不同的值出现两次(唯一字段除外),这样的记录也应该得到更新。

示例:

description firstName   lastName    title           organization    currentStage    inCurrentStageAsOf  serviceLevelMonitored
description1    John    Doe         CEO             organization1   Existing        1012001             Availability
description2    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description3    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description2    Jane    Joe         CIO             organization2   End-of-Life     2022002             Performance
description4    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description5    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description6    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description7    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description8    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description9    Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description10   Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description11   Jane    Doe         CIO             organization2   End-of-Life     2022002             Performance
description2    Jane    Doe                         organization2   End-of-Life     2022002             Performance

对于上述操作,如果我的唯一字段是描述和姓氏。然后我在 Rec2 和 Rec13 的文件中有重复的记录,但是 Rec4 不是重复的。也有可能一些记录已经存在于数据库中。

如果我的文件很大,我应该如何应用批处理? 我现在能想到的是将异步线程发送到 DB 以查找 Rec 是否存在,然后更新现有记录的 Id 并将整个记录分成两部分(要更新和要创建的记录)以及用于创建和更新的应用批处理分别地。如果有什么东西可以一次性完成,只是在寻求建议。 谢谢。

您可以使用 UPDATE UPSERT 来完成。

manual 中所述,您需要对感兴趣的属性使用 UNIQUE 索引,因此在您的情况下

CREATE INDEX yourClass.desc_lastName ON yourClass (description,lastName) UNIQUE_HASH_INDEX

然后您可以更新使用(例如,对于您的第一条记录):

UPDATE yourClass set description="description1",firstName="John",lastName="Doe",title="",organization="organization1",currentStage="Existing" UPSERT WHERE description="description1" AND lastName="Doe"