sql - 在rails中批量创建记录?

标签 sql activerecord ruby-on-rails-4 rails-activerecord rails-postgresql

好的,所以我有一个名为HashtagMapper.com的Rails应用程序,该应用程序可以按成千上万条找到推文并进行映射。我遇到的问题是,对1000多个查询进行地理编码之间可能需要10秒钟,然后.create()调用大约需要10毫秒,而对于1000个查询则需要10秒钟。

如何一次在Rails中全部创建1000个以上的DB对象?现在我正在打电话

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


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

最佳答案

使用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

关于sql - 在rails中批量创建记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303952/

相关文章:

sql - Google BigQuery SQL 用于对各个列求和

打开其他链接后jquery click事件不起作用

ruby-on-rails - 突然找不到 Rails 安装

ruby-on-rails-3 - 使用Rails将不同的顺序应用于postgres“DISTINCT ON”

ruby-on-rails - 如何使用 ActiveRecord 返回父级唯一的最新子级

javascript - 在 Rails 4 中使用 AJAX 进行搜索、排序和分页

mysql - 将 User-Agent 字符串的哈希存储在 MySQL 表中 : insert if not exists, 返回 id

sql - 如何使这个子子查询起作用?

mysql - 完全外连接中的 SQL 错误 1064

ruby-on-rails - Rails 与 activerecord 共享 session