【问题标题】:CSV Data Import To MYSQL DB Using RUBY使用 RUBY 将 CSV 数据导入到 MYSQL DB
【发布时间】:2013-08-08 20:35:19
【问题描述】:

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

需要'csv' 定义索引 结尾 定义添加 @filename=CSV::Reader.parse(params[:dump][:file]) n=0 CSV::foreach(@filename, :headers => true) 做 |row| Student.new(row.to_hash.symbolize_keys).save n=n+1 结尾 flash.now[:message]="CSV 导入成功,#{n} 条新记录添加到数据库" 结尾

现在当我插入 csv 文件时出现错误

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

我的 ruby​​ 版本是 1.8.7

任何帮助将不胜感激。

【问题讨论】:

    标签: ruby csv mysqlimport


    【解决方案1】:

    如果您使用的是 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
    

    您可以在 http://apidock.com/ruby/CSV 上获取有关 CSV:foreach 的更多信息


    上面的回复失败了,因为我认为 [: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
    

    【讨论】:

    • 谢谢你,但现在我得到这个错误:- 无法将 Tempfile 转换为字符串
    • Okk dis 解决了……但我被困在新的东西上……未初始化的常量 DataImportController::Student 我猜是路由的问题……你能提供代码..
    • 我得到了这个纠正.. 但是当我添加数据时,它说 can't dup Fixnum 对此有任何想法/?
    • 您可以查看以下链接:Numeric.dupicableWhy don't numbers support .dup?
    • 我不明白这一点。这是否意味着我的 csv.. 中有重复数据?
    猜你喜欢
    • 1970-01-01
    • 2017-12-22
    • 2012-02-14
    • 1970-01-01
    • 2018-02-16
    • 2020-08-06
    • 2017-08-18
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多