2010-09-13 91 views
9

我有一個用戶類的Rails 3應用程序,以及我想要導入的用戶的製表符分隔文件。如何將數據導入到rails中?

我如何進入軌道控制檯之外的活動記錄模式,讓我可以寫一個腳本來執行

require "???active-record???" 

File.open("users.txt", "r").each do |line| 
    name, age, profession = line.strip.split("\t") 
    u = User.new(:name => name, :age => age, :profession => profession) 
    u.save 
end 

難道我用的是「AR-擴展」的寶石,或者是有其他辦法? (我現在不特別關心速度,我只是想簡單一些。)

回答

14

你可以寫一個rake方法。 將此添加到your_app/lib目錄/文件夾任務一my_rakes.rake文件:

desc "Import users." 
    task :import_users => :environment do 
    File.open("users.txt", "r").each do |line| 
     name, age, profession = line.strip.split("\t") 
     u = User.new(:name => name, :age => age, :profession => profession) 
     u.save 
    end 
    end 

的然後從碼頭您的應用程序的根文件夾叫$ rake import_users

4

使用activerecord-import用於批量導入的gem。

通過您的Gemfile安裝:

gem 'activerecord-import' 

收集用戶和進口:

desc "Import users." 
task :import_users => :environment do 
    users = File.open("users.txt", "r").map do |line| 
    name, age, profession = line.strip.split("\t") 
    User.new(:name => name, :age => age, :profession => profession) 
    end 
    User.import users 
end 
+0

,如果我要檢查,如果條目存在,如果它確實執行更新什麼。如果這是一個新的條目,我想創建它。不知道這將與映射工作? – MMachinegun 2016-04-24 22:55:05