【问题标题】:How to solve when parsing CSV file return empty values?解析CSV文件返回空值时如何解决?
【发布时间】:2011-11-15 10:20:08
【问题描述】:

我正在使用 ruby​​ 1.9.2 和 Rails 3.0.7。我编写了 ruby​​ 后端脚本,它将使用 cron 作业每隔 15 分钟创建一个 CSV 文件。

后端 ruby​​ 脚本:

 CSV.open("count.csv", 'wb',:col_sep=>',') do |csv|
 # header row
   csv << ['id', 'count']
   models = Model.all
   models.each do |obj|
      csv << [ obj.id, obj.get_count]
   end
 end

从上面的脚本 CSV 文件(count.csv)成功创建。在 Rails 应用程序中,

 CSV.foreach("count.csv", :quote_char => '"', :col_sep =>',', :row_sep =>:auto, :headers => true) do |row|
   count =  row["count"].to_i if row["id"].to_i == @id
 end 

我需要从该 CSV 文件中解析计数值。但问题是当 cron 执行时,我无法从该 CSV 文件中获取计数值,所有记录都返回零,执行完成后我可以获得计数值。但是无论cron执行是停止还是开始,我都需要计数值,有人可以帮我解决或提出任何建议吗?提前致谢。

【问题讨论】:

  • 您的代码对我来说看起来不错。你确定@id 已经初始化了吗?
  • @daniel - 是的,我已经初始化了。该问题发生在 ruby​​ 脚本执行期间。在 Rails 报告方面,我得到所有数据的零值。我不知道它是怎么发生的?有什么猜测吗?
  • 你为什么要做这一切而不是简单地在 Rails 中调用obj.get_count
  • 你检查count.csv的权限了吗?位置怎么样?你能用File.open打开阅读吗?
  • 在 Heroku 上你不知道。为什么要为 CSV 烦恼呢?为什么不向您的数据库添加一个额外的表?

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


【解决方案1】:
models = Model.all
models.each do |obj|
  csv_string << [ obj.id, obj.get_count]
end

CSV.open("count.csv", 'wb',:col_sep=>',') do |csv|
# header row
 csv << ['id', 'count']
 csv << csv_string
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多