在rails中批量创建记录?

问题描述 投票:0回答:1

好吧,我有一个名为 HashtagMapper.com 的 Rails 应用程序,它可以查找数千条推文并映射它们。我遇到的问题是,在地理编码 1000 多个查询之间最多可能需要 10 秒,然后

.create()
调用大约需要 10 毫秒,对于 1000 个查询来说需要 10 秒。

如何在rails中一次性创建1000多个数据库对象?现在我正在打电话

SearchResult.create([ { :2D => array }, { :of => SearchResults } ]) 

对于 1000 多个对象。普通 SQL 会更快吗?怎么办?

sql activerecord ruby-on-rails-4 rails-activerecord rails-postgresql
1个回答
0
投票

使用BulkInsert gem

来自数组或哈希:

Book.bulk_insert(:title, :author) do |worker|
  # specify a row as an array of values...
  worker.add ["Eye of the World", "Robert Jordan"]

  # or as a hash
  worker.add title: "Lord of Light", author: "Roger Zelazny"
end

数据库列的默认值

class Book < ActiveRecord::Base
end

book_attrs = ... # some array of hashes, for instance
Book.bulk_insert do |worker|
  book_attrs.each do |attrs|
    worker.add(attrs)
  end
end
© www.soinside.com 2019 - 2024. All rights reserved.