Получить в этой базе данных! Разбор CSV с использованием Ruby - PullRequest
1 голос
/ 09 апреля 2010

У меня есть файл 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)

Помощь!

1 Ответ

5 голосов
/ 09 апреля 2010

Для 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
...