2014-09-23 99 views
2

对不起,我的问题很简单,因为我在任何方面都很新手。在Ruby on Rails上导入csv文件

正如我的问题所述,我想将带有标题行的csv文件导入到现有数据表中。即使我尝试了4天这些答案(和其他谷歌搜索) Trouble importing csv file with ruby CSV ModuleRuby on Rails - Import Data from a CSV file ,但我找不到方法。

# db/migrate/20140923064239_create_restaurants.rb 
class CreateRestaurants < ActiveRecord::Migration 
    def change 
    create_table :restaurants do |t| 
     t.string :restaurant_category 
     t.string :restaurant_subcategory 
     t.timestamps 
    end 
    end 
end 

# lib/tasks/import.rake 
require 'csv' 

CSV.foreach("english.csv", :headers => true) do |row| 
    Restaurant.create!(row.to_hash) 
end 

# english.csv 
restaurant_category,restaurant_subcategory 
kor,bakban 
kor,galbi 
kor,gobchang 
kor,hanjeong 
kor,hajang 
kor,dolsot 
kor,bude 
kor,jokbal 
kor,sullung 
chin,ssambab 
chin,dubu 
chin,jechum 
chin,pajeon 

然后我做了rake db:migrate,并得到了错误信息NameError: uninitialized constant Restaurant。我在谷歌尝试了很多其他的方式,但每次出现这个错误消息。我现在只是假设我现有的餐厅表不适用于这个耙子过程(尽管我不知道这个错误信息的真正含义)。

所以,请帮助我解决这个问题,我非常抱歉,可能容易的问题。但对我来说太难了,我无法解决它。谢谢。

回答

2

为此创建一个rake任务。编辑您的import.rake文件

require 'csv' 
namespace :db do 
    task :import_csv => :environment do 
    CSV.foreach("english.csv", :headers => true) do |row| 
     Restaurant.create!(row.to_hash) 
    end 
    end 
end 

和运行bundle exec rake db:import_csv

+0

哇,我应该早一点问它。非常感谢!!!!!!我不知道'命名空间'的东西。也许我必须学习更多。谢谢! – 2014-09-23 09:33:57

+0

@JeongbinKim不客气! :)和所有最好的学习更多。 – Jyothu 2014-09-23 10:23:30