NoMemoryError:无法分配内存

时间:2018-04-18 08:05:45

标签: ruby-on-rails

我有一个包含大量数据的xlsx文件,我有这个脚本将xlsx文件中的数据插入到我自己的数据库中:

file = 'lib/assets/sicepatfull.xlsx'
xlsx = Roo::Spreadsheet.open(file)
sheet = xlsx.sheet(0)
attrs = sheet.row(1)
data = sheet.parse(header_search: attrs).map do |d|
  d.map {|k, v| [k.parameterize.underscore.to_sym, v] }.to_h.except :id
end
Courier.create!(data)

该命令在attrs后被取消,结果为:NoMemoryError: failed to allocate memory

我该如何解决?

1 个答案:

答案 0 :(得分:0)

Roo将整个文件加载到内存中,因此如果文件很大,则可能对RAM太大。

您可以使用其他XLSX阅读器,例如