SimpleCsvImporter

Convert CSV data to instances of model and import to database easily.

Usage

  1. prepare model class
class User
  attr_accessor :email, :name, :sex, :age
end
  1. create importer
class UserImporter
  include SimpleImporter

  assign :email, 'Email'
  assign :name, ->(row) { "#{row['First Name']} #{row['Last Name']}" }
  assign :sex, 'Sex' do |sex|
    sexes = { 'Male' => 1, 'Female' => 2 }
    sexes[sex]
  end
  assign :age, 'Age', &:to_i
end
  1. load csv and convert to instances of the model
importer = UserImporter.new
csv_text = <<-TEXT
Email,First Name,Last Name,Sex,Age,
[email protected],Alice,Abbot,Female,20
[email protected],Bob,Brown,Male,25
TEXT

importer.load(csv_text)
# =>
#[
#  #<User:0x01 @age=20, @email="[email protected]", @name="Alice Abbot", @sex=2>,
#  #<User:0x02 @age=25, @email="[email protected]", @name="Bob Brown", @sex=1>
#]