【问题标题】:How to perform bulk insert into database when model is a nested set?当模型是嵌套集时如何对数据库执行批量插入?
【发布时间】:2019-07-05 08:01:48
【问题描述】:

我有一个涉及嵌套集合数据结构的模型,所以我使用了 act_as_nested_set gem。现在,我需要批量插入更多 10 万条记录。如果不是嵌套的集合数据结构,批量插入可能会更容易和更快捷。但是使用嵌套集,每次插入都会更新祖先链中的所有记录。所以,这需要很长时间。

我想创建内存树并维护 lft、rgt、深度、children_count、深度,然后批量插入它们,但我不确定在内存中创建 10 万个复杂对象是否是个好主意。

【问题讨论】:

    标签: ruby-on-rails bulkinsert nested-set-model


    【解决方案1】:

    你可以使用activerecord-import gem,Activerecord-Import 是一个使用 ActiveRecord 批量插入数据的库。

    GitHub 链接https://github.com/zdennis/activerecord-import

    例如

    books = []
    10.times do |i|
      books << Book.new(name: "book #{i}")
    end
    Book.import books  
    

    【讨论】:

    • 这行不通,因为每次插入都会更新祖先链中的所有节点。
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 2016-04-21
    • 2021-12-25
    相关资源
    最近更新 更多