我正在使用ruby从前端将csv文件导入mysql。这是我的控制器代码
需要"csv"def csv_inport@parsed_file=CSV::Reader.parse(params[:dump][:file])n=0@parsed_file.each do|行|c=客户信息.newc.job_title=行[1]c.first_name=行[2]c.last_name=行[3]if c.saven=n+1GC.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列与文本框中选择的实体相连。
如有任何帮助,我们将不胜感激。
感谢
如果使标题与表列相同,则代码应该简单到:
CSV::foreach(filename, :headers => true) do |row|
Model.new(row.to_hash).save
end