Hi there. I don''t know how to Import CSV file into my database.Can you help me code it.thks -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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.thksWell, 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 Biedenharn http://agileconsultingllc.com Rob-xa9cJyRlE0mWcWVYNo9pwxS2lgjeYSpx@public.gmane.org --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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.thksThis 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 Stewart --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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! :) -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---