在Ruby on Rails模型中加载和提取整个CSV

时间:2011-10-10 07:34:42

标签: ruby-on-rails

我应该如何为我的RoR应用程序加载(或更新)数据库?这是一次“操作”,因此在应用程序中对其进行编码似乎很奇怪。

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

感谢。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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