2010-02-24 3 views
0

FasterCSV를 사용하여 CSV 보고서를 생성하는 레일즈에 컨트롤러가 있습니다. 이 보고서에는 약 20,000 개의 행이 포함됩니다.FasterCSV with Rails를 사용하여 많은 양의 데이터 내보내기

아래의 구현에서 csv_string을 만들 때 약 30 초 이상 걸립니다. 데이터를 내보내는 더 좋고/더 빠른 방법이 있습니까? csv_string에 메모리에 데이터를 모두 저장하지 않고 데이터를 출력하는 방법은 무엇입니까?

나의 현재 구현은 다음과 같습니다

@report_data = Person.find(:all, :conditions => "age > #{params[:age]}") 
csv_string = FasterCSV.generate do |csv| 
    @report_data.each do |e| 
     values = [e.id, e.name, e.description, e.phone, e.address] 
     csv << values 
    end 
end 
send_data csv_string, :type => "text/plain", 
    :filename=>"report.csv", :disposition => 'attachment' 

답변

관련 문제