使用RUBY将CSV数据导入MYSQL数据库

时间:2013-08-07 12:50:05

标签: ruby csv mysqlimport

我正在尝试通过csv将数据插入数据库。 这是我的控制器代码


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

我的ruby版本是1.8.7

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分: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的更多信息:fore 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