Ruby 高效地从HTTP::响应读取CSV
我想从an中读取带有标题的CSV,而不将整个内容拉入内存Ruby 高效地从HTTP::响应读取CSV,ruby,Ruby,我想从an中读取带有标题的CSV,而不将整个内容拉入内存 CSV.new采用字符串或IO。现在,我必须将响应主体转换为字符串,将其全部放入内存,然后再解析整个内容 CSV.new(response.body.to_s, headers: true).each do |row| ... end 我可以逐行阅读和解析响应正文吗?根据此基准: 从IO读取的内存使用率/占用空间最小,并使用CSV.new进行优化 您是否考虑过使用openuri读取远程文件/http端点并流式传输到CSV.new
CSV.new
采用字符串
或IO
。现在,我必须将响应主体转换为字符串
,将其全部放入内存,然后再解析整个内容
CSV.new(response.body.to_s, headers: true).each do |row|
...
end
我可以逐行阅读和解析响应正文吗?根据此基准: 从IO读取的内存使用率/占用空间最小,并使用
CSV.new
进行优化
您是否考虑过使用openuri
读取远程文件/http端点并流式传输到CSV.new
大概是这样的:
require 'open-uri'
require 'csv'
csv = CSV.new(open('https://somesite/data.csv'))
while row = csv.shift # parse one by one with minimal memory footprint
puts row.inspect
end
根据这一基准: 从IO读取的内存使用率/占用空间最小,并使用
CSV.new
进行优化
您是否考虑过使用openuri
读取远程文件/http端点并流式传输到CSV.new
大概是这样的:
require 'open-uri'
require 'csv'
csv = CSV.new(open('https://somesite/data.csv'))
while row = csv.shift # parse one by one with minimal memory footprint
puts row.inspect
end
是的,这个查询非常简单,我可以使用
openuri
。非常感谢。是的,这个查询非常简单,我可以使用openuri
。非常感谢。