How I Import file CSV into database

Hi there.
I don’t know how to Import CSV file into my database.Can you help me
code it.thks

On Mar 1, 2007, at 9:36 PM, watxit wrote:

Hi there.
I don’t know how to Import CSV file into my database.Can you help me
code it.thks

Well, when I had to do this recently, I used FasterCSV and
ActiveRecord inside a Rails migration which began like:

require ‘rubygems’
require ‘active_record/fixtures’
begin
gem ‘fastercsv’, ‘>=1.2’
rescue Exception

on TxD, it’s unpacked as a plugin!

$: << File.expand_path(‘vendor/plugins/fastercsv-1.2.0/lib’)
end
require ‘fastercsv’

class ImportResearchData < ActiveRecord::Migration

And had a part that was like:

   FasterCSV.open(research_data,
                  :headers           => :first_row,
                  :converters        => :numeric) do |csv|
     csv.each do |row|
       if csv.lineno % 1000 == 1
         $stderr.print "\r%5d ..." % csv.lineno
         $stderr.flush
       end
       row.each do |header,value|

…and used the block variables to create one of three different
records, if needed, through ActiveRecord models. You should be able
to figure out how to get started. Note that if your CSV file is one-
record equals one-database-row, your loop will likely be quite a bit
simpler than mine. (My CSV data was essentially the result that
would come from a three table join of the original database to which
I had no access.)

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

For occasional use, (or not, now that I think of it), you can also use
MySQL to import it. A gui like Navicat can be a great time server in
that case.
For other DB, please check the doc.

Hello,

On 2 Mar 2007, at 02:36, watxit wrote:

I don’t know how to Import CSV file into my database.Can you help me
code it.thks

This article on Migrating Data Into Rails might be of interest to you:

http://blog.airbladesoftware.com/2006/12/5/migrating-data-into-rails

If you want to massage the values in your CSV file, you’ll probably
be better off using FasterCSV to read the CSV file, general Ruby to
massage the data as desired, and finally Active Record to save the
values in the database.

On the other hand, if you just want to lever the values straight into
the database without alteration, it’ll be quicker and simpler to use
your database’s batch import facility. There’s a link to the MySQL
one in the article above.

Regards,
Andy S.

Thanks all.
here are my code:

def upload
row_count=0
CSV::Reader.parse(File.open(‘file.csv’)) do |row|
row_count += 1
if row_count != 1
this_row = {:name => row[0],
:email=> row[1]

           }
  @contacts = Contact.new(this_row)
  @contacts.user_id=current_user.id
  @contacts.save!

end

end
flash[:notice] = “Imported #{row_count} rows”
end
It good! :slight_smile: