2010-04-09 44 views
1

我有格式化就是這樣的一個CSV文件:獲取該數據庫!解析CSV使用Ruby

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

正如你所看到的,在Ruby OO世界每一列代表各類型的混合 - 字符串,字符串,布爾,INT。

現在,我最終想要解析文件中的每一行,確定適當的類型,並通過Rails遷移將該行插入到數據庫中。例如:

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

幫助!

+0

什麼是標準7年前? – keruilin 2017-03-08 11:46:59

回答

5

對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的,只是重命名FasterCSVCSVfastercsvcsv

require 'csv' 

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

FasterCVS是一個寶石,所以你可能需要安裝,不要忘記'require'fastercvs'' – 2010-04-09 19:20:15

+0

我得到這個錯誤: 「請切換到Ruby 1.9的標準CSV庫。它是FasterCSV加支持Ruby 1.9的m17n編碼引擎「。 任何想法如何處理? – keruilin 2010-04-09 20:53:39

+0

我更新了答案。 – yfeldblum 2010-04-09 21:19:29