将数据集导出为CSV不返回完整数据集

时间:2012-12-05 00:06:07

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

我目前正在研究一种大型测量应用程序,该应用程序目前正在Heroku上生产(Cedar,4 web dynos,Crane PostgreSQL数据库)。由于时间限制,我有一个Survey模型,通过attr_accessible公开问题。我希望导出天数结果,通常是5000多行数据,大约45列。

当我导出当天的调查(Survey.where("created_at >= ?", Time.now.beginning_of_day))时,使用thisthis的组合,它会提示下载,下载,但是当我打开它时,我只有2/3的数据。有时它会在一排中途切断。

似乎我遇到了某种内存问题,或者是将所有内容正确发送到Excel / CSV的问题。我确信这是因为数据大小,但我无法控制,我只是想找到问题。关于如何解决这个问题的任何想法?这非常令人虚弱。

以下是调查模型中处理CSV / Excel编写的代码:

  def self.to_csv(options = {})
    CSV.generate do |csv|
      csv << column_names
      all.find_each do |survey|
        csv << survey.attributes.values_at(*column_names)
      end
    end
  end

目前在控制器上,我在index.xls.erb中格式化所有内容。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题!经过一番探索之后,我从使用HTML格式的view / xls文件切换到仅在视图中格式化的准系统CSV,如answer中所述。这非常有效。感谢大家的故障排除想法!