将大量数据导入具有唯一约束的核心数据



>我有一个实体 带有关键字的单词是字符串类型的唯一约束。现在,我必须从文本文件中导入大量(>100000条记录(带有新关键字的Words。我尝试创建coredata NSManagedObject,并使用NSPolicyObjectTrump插入上下文,以将新关键字与旧关键字合并。但不幸的是,由于 coredata 的解决冲突过程,我在上下文上的保存项目变得很慢(2-3 分钟(。那么,导入如此大量的项目并确保不违反coredata的唯一约束的最佳方法是什么?我是否应该预先创建 sqlite 以及如何迁移具有相同对象模型的 sqlite 文件?谢谢

  1. 将数组拆分为多个切片。 每个切片应该有大约 200 个项目。 您应该测试和调整此数字以找到适合您的应用程序的批量大小,但此数字在我自己的应用程序中对我有用。

  2. 为每个切片创建操作队列和操作,以便您可以处理每个切片,一次一个

  3. 对于需要处理的每个切片:

    • 获取与您插入的元素具有相同 ID 的所有实体(使用一个获取请求(
    • 将获取的元素插入到字典中,其中键是唯一的 Id,值是您获取的 mananagedObject
    • 对于每个元素,请查看您是否已经有重复项。 如果这样做,则更新或忽略它(取决于您的应用程序逻辑(。如果您没有,请插入它
    • 在转到下一批之前保存上下文

最新更新