프런트 엔드에서 mysql에 루비를 사용하여 CSV 파일 가져 오기를 구현하고 있습니다. 이것은 내 컨트롤러 코드입니다.루비를 사용하여 MySQL 데이터 가져 오기
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>
내가 원하는 것은 DB에 약 30 개의 열이 있고, CSV에는 30 개의 열 머리글이 포함됩니다. 또한 검열을 위해 필자는 textfield를 사용하여 열 중 하나를 입력으로 요청하므로 csv 시트에 29 개의 열을 만듭니다. 사용자가 선택한 옵션에 따라 복용량 29 열은 텍스트 상자에서 선택한 항목과 연결됩니다.
도움을 주시면 감사하겠습니다. 당신이 헤더를 한 경우
는 다음과 같이 테이블 컬럼과 같은, 당신의 코드가 간단해야 당신에게
그래서 파일에 임의의 열을 남기면 데이터 열에 데이터를 삽입하지 않습니다. – Rockr
죄송합니다. 나는 그 문장을 전혀 이해하지 못합니다. – pguardiario
나는 내 데이터베이스에 열이 30 개 있다는 것을 의미합니다. 컬럼 헤더가있는 Excel 파일에서 29 개 컬럼 만 만들면 컬럼 헤더별로 데이터를 조정하고 배치 할 것입니다. – Rockr