Ruby on Rails Переход от CSV к FasterCSV - PullRequest
0 голосов
/ 15 февраля 2010

В настоящее время у меня есть следующий код для анализа файла CSV с использованием стандартной библиотеки CSV

@parsed_file=CSV::Reader.parse(params[:dump][:file])
@parsed_file.each  do |row|
#some code
end

Я хочу переместить это в более быстрый CSV для увеличения скорости. Кто-нибудь знает эквивалент вышеупомянутого для FasterCSV?

Спасибо

Ответы [ 2 ]

2 голосов
/ 15 февраля 2010
CSV::Reader.parse(File.open('file.csv')){|row| puts row} 
or
CSV::Reader.parse("some, content\nanother, content"){|row| puts row} 

и

FasterCSV.parse(File.open('file.csv')){|row| puts row}
or
FasterCSV.parse("some, content\nanother, content"){|row| puts row}

эквивалентны.

Но

FasterCSV.read('filename') 

принимает имя файла в качестве параметра и читает и анализирует данные из файла, однако вы выгружаете содержимое файла при передаче данных в параметр

@parsed_file = FasterCSV.parse(params[:dump][:file])
@parsed_file.each do |row| 
  puts row
  # and do some operations
end

должно работать нормально.

1 голос
/ 15 февраля 2010

Чтобы сделать это с путем к файлу (как вы, кажется,):

FasterCSV.read(params[:dump][:file])

Вы можете проверить FasterCSV docs для других способов сделать это (например, обработать каждую строку, когда она проанализирована, или прочитать из строки вместо файла).

...