• Stars
    star
    129
  • Rank 279,262 (Top 6 %)
  • Language
    Ruby
  • License
    MIT License
  • Created almost 16 years ago
  • Updated over 14 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A small library intended to simplify the common steps involved with importing CSV files to a usable form in Ruby.

csv-mapper¶ ↑

DESCRIPTION:¶ ↑

CsvMapper is a small library intended to simplify the common steps involved with importing CSV files to a usable form in Ruby. CsvMapper is compatible with recent 1.8 versions of Ruby as well as Ruby 1.9+

EXAMPLES:¶ ↑

The following example will import a CSV file to an Array of Struct instances.

Example CSV File Structure¶ ↑

First Name,Last Name,Age
John,Doe,27
Jane,Doe,26
Bat,Man,52
...etc...

Simple Usage Example¶ ↑

results = CsvMapper.import('/path/to/file.csv') do
  start_at_row 1
  [first_name, last_name, age]
end

results.first.first_name  # John
results.first.last_name   # Doe
results.first.age         # 27

Automagical Attribute Discovery Example¶ ↑

results = CsvMapper.import('/path/to/file.csv') do
  read_attributes_from_file
end

results.first.first_name  # John
results.first.last_name   # Doe
results.first.age         # 27

Import to ActiveRecord Example¶ ↑

Although CsvMapper has no dependency on ActiveRecord; it’s easy to import a CSV file to ActiveRecord models and save them.

# Define an ActiveRecord model
class Person < ActiveRecord::Base; end

results = CsvMapper.import('/path/to/file.csv') do
  map_to Person # Map to the Person ActiveRecord class (defined above) instead of the default Struct.
  after_row lambda{|row, person| person.save }  # Call this lambda and save each record after it's parsed.

  start_at_row 1
  [first_name, last_name, age]
end

See CsvMapper for a more detailed description

REQUIREMENTS:¶ ↑

FasterCSV on pre 1.9 versions of Ruby

INSTALL:¶ ↑

  • sudo gem install csv-mapper

Note on Patches/Pull Requests¶ ↑

  • Fork the project.

  • Make your feature addition or bug fix.

  • Add tests for it. This is important so I don’t break it in a future version unintentionally.

  • Commit, do not mess with rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)

  • Send me a pull request. Bonus points for topic branches.

Copyright © 2009 Luke Pillow. See LICENSE for details.