ruby-on-rails - 使用 rails 从 CSV 导入特定的行和列

标签 ruby-on-rails csv import

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 加载到某种临时表中,然后获取我需要的内容吗?

最佳答案

row.to_hash 将根据 header 生成属性散列。要选择一组特定的属性,您应该使用 slice。

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

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

关于ruby-on-rails - 使用 rails 从 CSV 导入特定的行和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15048534/

相关文章:

ruby-on-rails - 有人找到了让 Heroku 与 Cloudflare Railgun 一起工作的方法吗?

git - 如何查找 git 提交了文件中删除的行

php - 在 PHP 中将 CSV 文件导入 Mysql 数据库

python - 我想解析一个大的 csv 文件并将其上传到 mysql 数据库中,但它需要很长时间。 Python/Django

python - 如何在 python 中使用电子表格或等效项来存储列表?

unity3d - 如何将 SVG 导入 Unity 2018.2

Python 包含,模块范围问题

ruby-on-rails - 为什么重定向错误?

ruby-on-rails - 未上传图像时回形针出错

ruby-on-rails - Heroku 上的 Rails 5.x.x(没有路由匹配 [GET]/assets)