0

我正在使用 ruby​​ 将 csv 文件从前端导入到 mysql 中。这是我的控制器代码

    需要'csv'

       定义 csv_import
         @parsed_file=CSV::Reader.parse(params[:dump][:file])
         n=0
         @parsed_file.each 做 |row|
         c=客户信息.new
         c.job_title=行[1]
         c.first_name=行[2]
         c.last_name=行[3]
         如果 c.save
            n=n+1
            GC.start 如果 n%50==0
         结尾
         flash.now[:message]="CSV 导入成功,#{n} 条新记录添加到数据库"
       结尾

这是我的前端代码。

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

现在我想要的是,我在 DB 中有大约 30 列,csv 将包含 30 个列标题。此外,对于检查,我将使用 textfield 询问其中一列作为输入,以便在 csv 表中生成 29 列。根据用户选择的选项,剂量 29 列与文本框中的选定实体相连。

任何帮助,将不胜感激。

谢谢

4

1 回答 1

0

如果您使标题与表格列相同,您的代码应该很简单:

CSV::foreach(filename, :headers => true) do |row|
  Model.new(row.to_hash).save
end
于 2013-08-07T09:23:47.543 回答