【发布时间】:2014-01-16 11:34:25
【问题描述】:
我正在尝试从数据库中读取大量单元格(超过 100.000 个)并将它们写入 VPS Ubuntu 服务器上的 csv 文件。碰巧服务器没有足够的内存。
我正在考虑一次读取 5000 行并将它们写入文件,然后再读取 5000 行,等等。
我应该如何重构我当前的代码,以免内存被完全消耗掉?
这是我的代码:
def write_rows(emails)
File.open(file_path, "w+") do |f|
f << "email,name,ip,created\n"
emails.each do |l|
f << [l.email, l.name, l.ip, l.created_at].join(",") + "\n"
end
end
end
该函数由 sidekiq worker 调用:
write_rows(user.emails)
感谢您的帮助!
【问题讨论】:
标签: ruby-on-rails ruby csv sidekiq