require 'csv'
CSV.foreach(filename, :headers => true) do |row|
if column3 = true || column 4 = true
Model.create!(row.to_hash)
else
skip
end
end
首先,有没有办法在 row.to_hash
期间只抓取某些列?
其次,我使用 if
语句是获取特定行的最佳方式吗?
我可以将整个 CSV 加载到某种临时表中,然后获取我需要的内容吗?
最佳答案
row.to_hash
将根据 header 生成属性散列。要选择一组特定的属性,您应该使用 slice。
>> row.to_hash # { :attr1 => 'val1', :attr2 => 'val2', :attr3 => 'val3' }
>> row.to_hash.slice(:attr1, :attr2) # { :attr1 => 'val1', :attr2 => 'val2' }
关于你的第二个问题:是的,你仍然需要加载整个 csv 并检查每一行。
关于ruby-on-rails - 使用 rails 从 CSV 导入特定的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048534/