加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

无法在Ruby on Rails 3中将csv导入MySQL数据库

发布时间:2020-12-17 03:36:04 所属栏目:百科 来源:网络整理
导读:我正在通过 Ruby on Rails 3将数据从CSV文件导入 MySQL数据库.客户模型已经创建.此外,下面的脚本将生成puts row [2]并正确放置row [3].当我为customers.warranty_part_no和warranty_part_desc的数据库字段添加分配时,会产生以下错误. csv = CSV.read(file,co
我正在通过 Ruby on Rails 3将数据从CSV文件导入 MySQL数据库.客户模型已经创建.此外,下面的脚本将生成puts row [2]并正确放置row [3].当我为customers.warranty_part_no和warranty_part_desc的数据库字段添加分配时,会产生以下错误.

csv = CSV.read(file,col_sep: ",",headers: false)

c = Customer.new  
csv.each do |row|
        c.warranty_part_no = row[2],c.warranty_part_desc = row[3]
end

这是我得到的错误.

uninitialized constant Customer (NameError)

经过一些测试后,我认为这个问题是因为我从命令行运行这个脚本,因此没有使用更大的rails应用程序执行customer.rb模型,因此永远不会创建Customer类.如何从命令行运行此脚本并利用ActiveRecord或activerecord-import?如果那是不可能的,我该如何为它创建路径或从应用程序中的视图调用它?

我在Ruby 1.9.2和Rails 3.2.2上.提前感谢任何建议.

解决方法

正如您所知,问题在于您的Rails环境未加载.您可以通过包含Customer模型,active_record以及使用database.yml建立连接,在独立脚本中执行此操作.

但是,有一种更简单的方法.像这样创建一个rake任务:

namespace :data do
  desc "Import data from CSV"
  task :import => :environment do
    #Your script here
  end
end

=> :环境告诉rake加载Rails,这样你的数据库连接和所有模型就可供你使用了.

使用rake数据调用它:import,如果你想要生产环境,添加RAILS_ENV = production.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读