現在、標準のcsvライブラリを使用してcsvファイルを解析する次のコードがあります
@parsed_file=CSV::Reader.parse(params[:dump][:file])
@parsed_file.each do |row|
#some code
end
速度を上げるために、これをより高速なcsvに移動したいと思います。FasterCSVの上記に相当するものを知っている人はいますか?
ありがとう
現在、標準のcsvライブラリを使用してcsvファイルを解析する次のコードがあります
@parsed_file=CSV::Reader.parse(params[:dump][:file])
@parsed_file.each do |row|
#some code
end
速度を上げるために、これをより高速なcsvに移動したいと思います。FasterCSVの上記に相当するものを知っている人はいますか?
ありがとう
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
正常に動作するはずです。
ファイルパスでそれを行うには(あなたがそうであるように):
FasterCSV.read(params[:dump][:file])
他の方法については、FasterCSV のドキュメントを参照してください (たとえば、解析時に各行を処理する、ファイルではなく文字列から読み取るなど)。