2013-08-07 2 views
0

Я реализую импорт файла csv из внешнего конца с использованием ruby ​​в mysql. это мой код контроллераИмпорт данных Mysql с использованием Ruby

 

    require 'csv' 

     def csv_import 
     @parsed_file=CSV::Reader.parse(params[:dump][:file]) 
     n=0 
     @parsed_file.each do |row| 
     c=CustomerInformation.new 
     c.job_title=row[1] 
     c.first_name=row[2] 
     c.last_name=row[3] 
     if c.save 
      n=n+1 
      GC.start if n%50==0 
     end 
     flash.now[:message]="CSV Import Successful, #{n} new records added to data base" 
     end 

Это мой передний конец кода.

<pre> 
<% form_for :dump, :url=>{:controller=>"customer_informations", :action=>"csv_import"}, :html => { :multipart => true } do |f| -%> 
<table"> 
    <tr> 
    <td> 
     <label for="dump_file"> 
     Select a CSV File : 
     </label> 
    </td> 
    <td > 
     <%= f.file_field :file -%> 
    </td> 
    </tr> 
    <tr> 
    <td colspan='2'> 
     <%= submit_tag 'Submit' -%> 
    </td> 
    </tr> 
</table> 
<% end -%> 
</pre> 

Теперь то, что я хочу, у меня есть около 30 столбцов в БД, то CSV будет содержать 30 заголовков столбцов. Кроме того, для проверки я буду запрашивать один из столбцов в качестве ввода с использованием текстового поля, так что в столбце csv будет 29 столбцов. В соответствии с опцией, выбранной пользователем, доза 29 столбцов присоединяется к выбранному объекту из текстового поля.

Любая помощь будет оценена по достоинству.

Спасибо

ответ

0

Если вы делаете заголовки так же, как столбцы таблицы, код должен быть простым, как:

CSV::foreach(filename, :headers => true) do |row| 
    Model.new(row.to_hash).save 
end 
+0

поэтому, если я не укажу ни один столбец в файле, он не будет вставлять данные в столбце dat в db., ?? – Rockr

+0

Извините, я вообще не понимаю этого предложения. – pguardiario

+0

Я имел в виду, что у меня есть 30 столбцов в моей базе данных. если я сделаю только 29 столбцов в моем файле excel с заголовками столбцов, будет ли он настраиваться и помещать данные в соответствии с заголовком столбца.? – Rockr

Смежные вопросы