!在处理请求意外的错误:无法分配内存 [英] !! Unexpected error while processing request: failed to allocate memory
本文介绍了!在处理请求意外的错误:无法分配内存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请帮我解决这个错误。
我在从文本文件加载记录到数据库中使用Ruby脚本收到此错误。
这只是工作正常,如果我用少量的记录加载到database.But如果有大量的记录失败。
CSV.foreach(文件名)做|在线|
completePath =行[0]
num_of_bps =行[1]
completePath = cluster_path +'/'+ completePath
索引节点= FileOrFolder.find_by_fullpath(completePath,:选择=>中ID)
metric_instance = MetricInstance.find(:第一,:条件=> [?file_or_folder_id = AND dataset_id =,inode.id,dataset_id])
add_entry(metric_instance.id,num_of_bps,num_of_bp_tests)
结束
高清self.add_entry(metaid,num_of_bps,num_of_bp_tests)
进入= Bp.new
entry.metric_instance_id = metaid
entry.num_of_bps = num_of_bps
entry.num_of_bp_tests = num_of_bp_tests
entry.save
返回入境
结束
解决方案
尝试是这样的:
File.open方法(文件名)做| CSV |
csv.each_line做|在线|
CSV.parse(线)做|值|
#在这里,你可以做你的操作
结束
结束
结束
这个方法是比较慢的,但应确保你没有得到的内存不足。
Please help me in solving this error.
I am getting this error while loading records from text files in to database using ruby scripts.
It just works fine if I use small number of records to load in to the database.But fails if there are large number of records.
CSV.foreach(fileName) do |line|
completePath = line[0]
num_of_bps = line[1]
completePath = cluster_path+ '/' + completePath
inode = FileOrFolder.find_by_fullpath(completePath, :select=>"id")
metric_instance = MetricInstance.find(:first, :conditions=>["file_or_folder_id = ? AND dataset_id = ?", inode.id, dataset_id])
add_entry(metric_instance.id, num_of_bps, num_of_bp_tests)
end
def self.add_entry(metaid, num_of_bps, num_of_bp_tests)
entry = Bp.new
entry.metric_instance_id = metaid
entry.num_of_bps = num_of_bps
entry.num_of_bp_tests = num_of_bp_tests
entry.save
return entry
end
解决方案
Try something like this:
File.open(fileName) do |csv|
csv.each_line do |line|
CSV.parse(line) do |values|
# Here you can do your manipulation
end
end
end
This way is slower, but it should ensure you don't get out of memory.
这篇关于!在处理请求意外的错误:无法分配内存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文