pho*_*ard 38 ruby activerecord ruby-on-rails ruby-on-rails-3 rails-postgresql
我想从我的Rails应用程序中将几千条记录批量插入数据库(在我的情况下为POSTGRES).
这样做的"Rails方式"是什么?一些快速且正确的方法.
我知道我可以通过字符串连接属性来创建SQL查询,但我想要一个更好的方法.
Sim*_*tti 59
ActiveRecord .create方法支持批量创建.如果数据库不支持该方法,则该方法会模拟该功能,如果支持该功能,则使用基础数据库引擎.
只需传递一系列选项.
# Create an Array of new objects
User.create([{ :first_name => 'Jamie' }, { :first_name => 'Jeremy' }])
Run Code Online (Sandbox Code Playgroud)
支持阻止,这是共享属性的常用方式.
# Creating an Array of new objects using a block, where the block is executed for each object:
User.create([{ :first_name => 'Jamie' }, { :first_name => 'Jeremy' }]) do |u|
u.is_admin = false
end
Run Code Online (Sandbox Code Playgroud)
pho*_*ard 20
在@Simone Carletti和@Sumit Munot的两个答案之后,我终于找到了解决方案.
直到postgres驱动程序支持ActiveRecord .create方法的批量插入,我想使用activerecord-import gem.它在单个insert语句中执行批量插入.
books = []
10.times do |i|
books << Book.new(:name => "book #{i}")
end
Book.import books
Run Code Online (Sandbox Code Playgroud)
在POSTGRES中,它会导致单个插入状态.
一旦postgres驱动程序在单个insert语句中支持ActiveRecord .create方法的批量插入,那么@Simone Carletti的解决方案更有意义:)
| 归档时间: |
|
| 查看次数: |
27020 次 |
| 最近记录: |