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
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!