从url Errno :: ENAMETOOLONG导入CSV:文件名太长

时间:2014-05-06 18:24:41

标签: ruby-on-rails csv ruby-on-rails-4

我尝试从网址导入CSV文件,但我正在获取Errno::ENAMETOOLONG: file name too long。我处理文件如下:

require 'open-uri'
url = "http://de65.grepolis.com/data/csv.txt"
url_data = open(url).read()

SmarterCSV.process(url_data, {
  ...
})

我缺少什么?

3 个答案:

答案 0 :(得分:6)

你必须传递一个应该在服务器上的文件名。你现在传递所有数据。做这样的事情

require 'open-uri'
url = "http://de65.grepolis.com/data/csv.txt"
url_data = open(url).read()
File.open('/tmp/file_name', 'w') { |file| file.write(url_data) }
SmarterCSV.process('/tmp/file_name',{ })

答案 1 :(得分:4)

使用标准CSV库通过http网址提取CSV文件时遇到了同样的问题。我能够解决问题,而无需使用以下代码写入临时服务器文件:

require 'open-uri'
require 'csv'
url = "http://de65.grepolis.com/data/csv.txt"
url_data = open(url).read()
CSV.parse(url_data, headers: true).each do |row|
  # per row processing code ...
end

答案 2 :(得分:0)

希望这会对你有所帮助。

RandVar

要点:https://gist.github.com/victorhazbun87/9ac786961bbf7c235f76