ruby-on-rails - 进入那个数据库!使用 Ruby 解析 CSV

标签 ruby-on-rails ruby csv fastercsv

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

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

如您所见,Ruby OO 世界中的每一列都代表一种类型的混合——string、string、boolean、int。

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

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

帮助!

最佳答案

对于 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

关于ruby-on-rails - 进入那个数据库!使用 Ruby 解析 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2609891/

相关文章:

mysql - rails 4 : how to use UNIX_TIMESTAMP with group YEAR + MONTH

ruby-on-rails - 编辑插入新记录

java - 解析 CSV 文件,但除了分隔数据外不进行格式化

python - 比较两列并在 Pandas 中获得唯一值

javascript - MessengerExtensions.requestCloseBrowser 似乎不起作用

ruby-on-rails - 思考狮身人面像显示选项

ruby-on-rails - Rails Devise 检查用户是否未登录

ruby-on-rails - Rails 邮件程序连接被拒绝 - localhost

ruby - #each 循环中的 #reduce 循环不会迭代整个数组

ruby-on-rails - 在 Rails 6 中读取存储在 Active Storage 中的 CSV 文件