【问题标题】:Importing specific rows and columns from a CSV with rails使用 rails 从 CSV 导入特定的行和列
【发布时间】:2013-02-09 12:12:11
【问题描述】:
require 'csv'    

CSV.foreach(filename, :headers => true) do |row|
  if column3 = true || column 4 = true
    Model.create!(row.to_hash)
  else
    skip
  end
end

首先,有没有办法在row.to_hash 期间只抓取某些列?

其次,我使用if 语句是获取特定行的最佳方式吗? 我可以将整个 CSV 加载到某种临时表中,然后获取我需要的内容吗?

【问题讨论】:

    标签: ruby-on-rails csv import


    【解决方案1】:

    row.to_hash 将根据标头生成属性哈希。要选择一组特定的属性,您应该使用 slice。

    >> row.to_hash # { :attr1 => 'val1', :attr2 => 'val2', :attr3 => 'val3' }
    >> row.to_hash.slice(:attr1, :attr2) # { :attr1 => 'val1', :attr2 => 'val2' }
    

    关于您的第二个问题:是的,您仍然需要加载整个 csv 并检查每一行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-12
      • 1970-01-01
      • 2016-09-05
      • 2021-09-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2013-05-22
      相关资源
      最近更新 更多