2013-08-07 104 views
0

我試圖通過CSV數據庫插入數據。 這是我的控制器代碼CSV數據導入MYSQL DB使用RUBY

 

    require 'csv' 
     def index 

     end 

     def add 
     @filename=CSV::Reader.parse(params[:dump][:file]) 
     n=0 
     CSV::foreach(@filename, :headers => true) do |row| 
     Student.new(row.to_hash.symbolize_keys).save 
     n=n+1 
     end 
     flash.now[:message]="CSV Import Successful, #{n} new records added to data base" 
     end 

現在,當我將csv文件我正在錯誤

**can't convert CSV::IOReader into String** 

我的紅寶石版本是1.8.7

任何幫助將不勝感激。

回答

0

如果您在使用Ruby,你可以使用下面的代碼:

require 'csv' 

def index 

end 

def add 
    n=0 
    CSV::foreach(params[:dump][:file]) do |row| 
    Student.new(row.to_hash.symbolize_keys).save 
    n=n+1 
    end 
    flash.now[:message]="CSV Import Successful, #{n} new records added to data base" 
end 

您可以獲取有關CSV的更多信息:foreach所http://apidock.com/ruby/CSV


我失敗是因爲我上面的回覆假設[:dump] [:file]是文件(字符串對象)的路徑,但是如果看到該錯誤,則應首先閱讀文件(它是TempFile對象),然後將內容解析爲字符串:

require 'csv' 
    def index 

    end 

    def add 
    n=0 
    CSV::parse(params[:dump][:file].read, :headers => true) do |row| 
     Student.new(row.to_hash.symbolize_keys).save 
     n=n+1 
    end 

    flash.now[:message]="CSV Import Successful, #{n} new records added to data base" 
    end 
+0

三江源這一點,但現在m如果此錯誤: - **不能將它視爲檔案轉換成String ** – Rockr

+0

OKK DIS工作了...但我被困在新的東西.. **未初始化不斷DataImportController: :學生**我想它的路由問題..你可以提供的代碼.. – Rockr

+0

我得到這個糾正..但是當我添加的數據,它說**不能重複Fixnum **任何想法對這個/? – Rockr