2014-09-23 95 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