3

我编写了这个 rake 任务,它使我能够从应用程序的本地文件系统上的文件中读取 csv 文件,但是如何调整它以使其从 url 读取文件?

desc "This class will read a csv file and display its contents on the screen"

 task :read_csv => :environment do |t, args|
 require "csv"

 csv_text = File.read('someFile.csv')
 csv = CSV.parse(csv_text, :headers=>true)
 csv.each do |row|
   puts row
 end
end

如果有人可以帮助我提供代码或一些当前链接,将不胜感激。我发现的大多数链接都是针对以前版本的 rails 的,其中 FasterCSV 不是 ruby​​ 的一部分。

谢谢

4

3 回答 3

7

open-uri帮助读取远程文件

require 'csv'
require 'open-uri'

csv_text = open('http://www.vvv.hh.yyy.ggg/~hhhh/uuuu.csv')
csv = CSV.parse(csv_text, :headers=>true)
csv.each do |row|
  puts row
end
于 2012-07-11T06:31:49.373 回答
5

使用 NET::HTTP 怎么样?

desc "This class will read a csv file from url and display its contents on the screen"

  task :read_csv => :environment do |t, args|
  require "csv"
  require 'net/http'

  uri = URI('http://www.xxx.ccc.xxx.ca/~xxx/xxx.csv')
  csv_text = Net::HTTP.get(uri)
  csv = CSV.parse(csv_text, :headers=>true)
  csv.each do |row|
    puts row
  end
end

这只是一个小小的调整,只从一个 url 获取它而不是 https,但你明白了,对吧?:)

于 2012-07-11T06:17:38.170 回答
0

这个问题与 几乎没有关系FasterCSV,因为无论如何您都是将整个文件加载到一个字符串中。那么问题就变成了,“如何从 URL 中获取数据到字符串中?”

于 2012-07-11T06:10:04.193 回答