0

現在、標準のcsvライブラリを使用してcsvファイルを解析する次のコードがあります

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

速度を上げるために、これをより高速なcsvに移動したいと思います。FasterCSVの上記に相当するものを知っている人はいますか?

ありがとう

4

2 に答える 2

2
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

正常に動作するはずです。

于 2010-02-15T06:41:02.477 に答える
1

ファイルパスでそれを行うには(あなたがそうであるように):

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

他の方法については、FasterCSV のドキュメントを参照してください (たとえば、解析時に各行を処理する、ファイルではなく文字列から読み取るなど)。

于 2010-02-15T06:36:49.770 に答える