2011-10-10 46 views
1

我应该如何为我的RoR应用程序加载(或更新)数据库?这是“一次性”操作,所以在应用程序中编码似乎很奇怪。在Ruby on Rails模型中加载和提取整个CSV

另外,如何在应用程序运行后访问数据库,模型文件是否位于服务器上的某个位置,可访问“只读”?

谢谢。

回答

1

你基本上可以写一个脚本来从CSV文件中加载数据到数据库中。

下面是一个例子,你可以怎么做:

require 'rubygems' 
require 'csv' 

infile = "db/data/csv/my_data.csv" # location of the file 
count = 0 

CSV.open(infile, 'r') do |row| 
    col1 = row[1] 
    col2 = row[2] 

    obj = MyObject.new({ :col1 => col1, :col2 => col2 }) 
    obj.save 

    count += 1 
    print '.' if (count % 10) == 0 
end 

puts 
puts "Successfully loaded #{count} records into database!" 

然后使用Rails command line tool runner运行脚本:rails runner db/scripts/csv_data_loader.rb

+0

使用csv非常有价值。在我的工作中,我已经使用并继续使用它来生成报告。收集一个集合,迭代它,很好地格式化并且有一个报告。 (ActiveRecord比使用裸SQL更容易。) – Tass

0

seeds.rb是您放置一次性初始化代码的地方。您可以在db子目录中找到它。这也可能是有趣的:Database seeding

如果您的应用程序已在生产中,请使用迁移。