Hello all,
I’m kind of new to fastercsv and only have 2 months with Ruby on Rails.
So this my sound a little newbie.
First, I read a csv file (approx. 6,000 lines). This file comes from a
different department, so I have no control over the headers.
Second, while reading or parsing the file, the rows are inputted into a
database.
My problem is my database columns can not have special characters, but
the csv headers have the special characters.
Is there a way to remove the special characters before inserting in
database?
Here is a view of my code.
def import_irb_file
# set file name
file = params[:irb][:file]
rowcount = 0
Irb.transaction do
FasterCSV.parse(file,
:headers => true,
:header_converters => :symbol,
:converters => :all,
:encoding => 'u' ) do |row|
Irb.create!(row.to_hash)
rowcount += 1
end
end
# if successful then display, then redirect to index page
flash[:notice] = "Successfully added #{rowcount} project(s)."
redirect_to :action => :index
rescue => exception
file_name = params[:irb]['file'].original_filename
file_parts = params[:irb]['file'].original_filename.split('.')
ext = file_parts[1]
if ext != 'csv'
error = "CSV file is required"
else
error = ERB::Util.h(exception.to_s) # get the error and HTML
escape it
end
# If an exception in thrown, the transaction rolls back and we end
up in this
# rescue block
flash[:error] = "Error adding projects to IRB table. (#{error}).
Please try again. "
redirect_to :controller => 'irbs', :action => 'new'
end
Thank you for any advice.
JohnM