CSV upload to database

Hello all,
I'm a newbie with Ruby on Rails. So far, 3 weeks and counting. I'm
really a PHP guy with a department that changed its development
platform. But enough of the chit chat.
My project consists of a "Project" database and periodic imports (new
data) to the database. This import file will be a .csv file and it'll be
necessary to compare the entire database for similar titles and project
managers and then import the new data to the database. (Nice project for
a newbie, uh?)

I've set up the initial projects database including new, edit, show,
destroy.

I've also created an additional "import" model/view/controller. I've
also installed "fasterCSV" and "attachment_fu".
I've read a couple "Upload" examples but they were mainly about
uploading images. I really need an example about uploading and reading
files to database.

What I'm thinking is I upload the csv data to a temporary hash then send
it to a grid for display. My supervisor wants a side by side comparison
of the csv and the current database.

Any help will be greatly appreciated.

Thank you.

JohnM

Welcome to Rails :slight_smile:

I understand you're only looking for help on loading the CSV-files
into the import table using Rails? I'm no expert on this, because I
only did this using PHP a long time ago, but hey, any help is help,
right?

Using fasterCSV you'll probably want to look at parsing the CSV file
line by line. So, for example, if you know every line has a name and a
value:

FasterCSV.foreach("path/to/file.csv") do |row|
  Import.new(:name => row[0], :value => row[1]).save
end

You can then use Rails to compare every instance of the import table
to your target table.

This might bring up some performance issues though, because you're
doing a MySQL INSERT query on every line. You can also look at
FasterCSV.read and get that array of arrays into your table some way
(I know MySQL can import an entire table within one query), but I'm
very tired and won't be of much help there at this moment :wink:

Hope this helps!

Kind regards,
Jaap Haagmans
w. http://www.relywebsolutions.nl