我正在尝试读取一个 5MM 行文件,现在它超出了我在 heroku 上的大量内存使用量。我的方法有点快~200 次插入/秒。我相信它在导入时崩溃了。所以我的计划是分批导入 1,000 或 10,000。我的问题是我怎么知道我在文件的末尾,ruby 有一个.eof
方法但它是一个File
方法,我不知道如何在我的循环中调用它
def self.import_parts_db(file)
time = Benchmark.measure do
Part.transaction do
parts_db = []
CSV.parse(File.read(file), headers: true) do |row|
row_hash = row.to_hash
part = Part.new(
part_num: row_hash["part_num"],
description: row_hash["description"],
manufacturer: row_hash["manufacturer"],
model: row_hash["model"],
cage_code: row_hash["cage_code"],
nsn: row_hash["nsn"]
)
parts_db << part
end
Part.import parts_db
end
end
puts time
end