Ruby on rails 如何减少加载到Rails中Roo对象的文件大小?

Ruby on rails 如何减少加载到Rails中Roo对象的文件大小?,ruby-on-rails,parsing,csv,memory,roo-gem,Ruby On Rails,Parsing,Csv,Memory,Roo Gem,我正在使用roogem解析CSV中的数据。CSV的大小大约是400MB,但是当我尝试用这个循环解析它时 (2..sheet.last_row).collect do |i| # parsing code... end 它将出错,因为[FATAL]无法分配内存。我本来打算用更小的循环将其分解,直到它到达最后一行,但仅仅向roo索要最后一行就会导致错误——因此我无法用那种方式解决它。您需要一次处理一行,而不是将整个数据加载到一个巨大的数组中,然后在数组中迭代。我使用FasterCSV,它有一

我正在使用
roo
gem解析CSV中的数据。CSV的大小大约是400MB,但是当我尝试用这个循环解析它时

(2..sheet.last_row).collect do |i|
   # parsing code...
end

它将出错,因为
[FATAL]无法分配内存。我本来打算用更小的循环将其分解,直到它到达
最后一行
,但仅仅向roo索要
最后一行
就会导致错误——因此我无法用那种方式解决它。

您需要一次处理一行,而不是将整个数据加载到一个巨大的数组中,然后在数组中迭代。我使用FasterCSV,它有一个“一次处理一行文件”的方法。在上查看roo时,我看不到此功能。@MaxWilliams,谢谢max。我还看到roo gem的局限性。它似乎使用了ruby CSV库,据我所知,它已经过时了。我正在探索<代码>智能CSV <代码> GEM,它似乎正在处理这个问题。只需要重做我的工作,你需要一行一行地处理它,而不是把所有的东西装入一个巨大的数组,然后在数组上迭代。我使用FasterCSV,它有一个“一次处理一行文件”的方法。在上查看roo时,我看不到此功能。@MaxWilliams,谢谢max。我还看到roo gem的局限性。它似乎使用了ruby CSV库,据我所知,它已经过时了。我正在探索<代码>智能CSV <代码> GEM,它似乎正在处理这个问题。只需要重做我的工作,你需要一行一行地处理它,而不是把所有的东西装入一个巨大的数组,然后在数组上迭代。我使用FasterCSV,它有一个“一次处理一行文件”的方法。在上查看roo时,我看不到此功能。@MaxWilliams,谢谢max。我还看到roo gem的局限性。它似乎使用了ruby CSV库,据我所知,它已经过时了。我正在探索<代码>智能CSV <代码> GEM,它似乎正在处理这个问题。只是重做我的工作的问题。