【问题标题】:Get In That DB! Parsing CSV Using Ruby进入那个数据库!使用 Ruby 解析 CSV
【发布时间】:2010-04-09 18:28:25
【问题描述】:

我有一个格式如下的 CSV 文件:

name,color,tasty,qty
apple,red,true,3
orange,orange,false,4
pear,greenish-yellowish,true,1

如您所见,Ruby OO 世界中的每一列都代表多种类型——字符串、字符串、布尔值、整数。

现在,最终,我想解析文件中的每一行,确定适当的类型,然后通过 Rails 迁移将该行插入到数据库中。例如:

Fruit.create(:name => 'apple', :color => 'red', :tasty => true, :qty => 3)

救命!

【问题讨论】:

  • 7年前的标准是什么?

标签: ruby-on-rails ruby csv fastercsv


【解决方案1】:

对于 Ruby 1.8:

require 'fastercsv'

FasterCSV.parse(my_string, :headers => true) do |row|
  Fruit.create!(
    :name => row['name'],
    :color => row['color'],
    :tasty => row['tasty'] == 'true',
    :qty => row['qty].to_i
  )
end

对于 Ruby 1.9,只需将 FasterCSV 重命名为 CSV 并将 fastercsv 重命名为 csv

require 'csv'

CSV.parse(my_string, :headers => true) do |row|
  # same as ruby-1.8
end

【讨论】:

  • FasterCVS 是一个 gem,所以你可能需要安装并且不要忘记require 'fastercvs'
  • 我收到此错误:“请切换到 Ruby 1.9 的标准 CSV 库。它是 FasterCSV 加上对 Ruby 1.9 的 m17n 编码引擎的支持。”知道如何处理吗?
  • FasterCSV 现在是 Ruby 的一部分,作为其默认的 CSV 类,所以只需使用 require 'csv' 就可以了。
猜你喜欢
  • 2013-08-24
  • 1970-01-01
  • 2021-08-05
  • 1970-01-01
  • 2018-05-02
  • 1970-01-01
  • 2019-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多