Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 高效地从HTTP::响应读取CSV_Ruby - Fatal编程技术网

Ruby 高效地从HTTP::响应读取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

我想从an中读取带有标题的CSV,而不将整个内容拉入内存

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
。非常感谢。