Ruby on rails 3 无法将CSV文件植入Rails应用程序
我正在尝试将大约2K条记录植入一个模型中,我已经尝试使用所有不同的方法(和)。我觉得这应该很简单。我已经把所有的数据都放在一个CSV文件中,我已经把模型设置好了,准备播种 到目前为止,唯一有效的方法就是在Railscapsts一集中所展示的内容。我为我的属性插入了这段代码,它只植入了第一行(2K中的第一行),就是这样:Ruby on rails 3 无法将CSV文件植入Rails应用程序,ruby-on-rails-3,sqlite,csv,seed,Ruby On Rails 3,Sqlite,Csv,Seed,我正在尝试将大约2K条记录植入一个模型中,我已经尝试使用所有不同的方法(和)。我觉得这应该很简单。我已经把所有的数据都放在一个CSV文件中,我已经把模型设置好了,准备播种 到目前为止,唯一有效的方法就是在Railscapsts一集中所展示的内容。我为我的属性插入了这段代码,它只植入了第一行(2K中的第一行),就是这样: Country.delete_all open("#{Rails.root}/path_to_my_file") do |models| models.read.each_l
Country.delete_all
open("#{Rails.root}/path_to_my_file") do |models|
models.read.each_line do |model|
column_1, column_2, column_3, column_4 = model.chomp.split(",")
Model.create!(:attr_1 => column_1, :attr_2 => column_2, ...etc)
end
end
然后基于其他一些问题,我尝试使用FasterCSV
,但我收到了一系列错误,说FasterCSV
已经包含在最新版本的ruby中,我似乎无法理解(这可能是我的错,但我还没有找到一个好的SO问题来很好地解释它)
最后,Fast\u Seeder
似乎有一些潜力,它识别了我的所有条目,但没有将任何条目保存到模型中,因为我收到了以下错误:
SQLite3::SQLException:复合选择中的术语太多:(所有我的列)
总之,我觉得这应该足够简单。我只是有一个有2K个条目的CSV,还有一个空白的模型,我需要种子。最好的方法是这样做,将不胜感激,谢谢 看来我已经明白了,很抱歉。如果这段代码需要改进,我将非常感谢对它的一些评论 无论如何,我想我是用fasterCSV(或CSV)解决的。这似乎奏效了:
require 'csv'
Model.delete_all
CSV.foreach("#{Rails.root}/lib/data/model.csv") do |row|
Model.create!(:attr_1 => row[0], :attr_2 => row[1], :attr_3 => row[2], etc)
end
我见过的最好的成功是通过执行rake任务
require 'csv'
namespace :csv do
desc "Import CSV Data"
task :import_stuff => :environment do
csv_file_path = 'db/data.csv'
CSV.foreach(csv_file_path) do |row|
Model.create!({
:column1 => row[0],
:column2 => row[1],
:column3 => row[2],
})
puts "Row added!"
end
end
end
将它放在lib/tasks文件夹中,扩展名为.rake,要运行它,请键入:“rakecsv:import_stuff”
此外,使用SQL lite可能会遇到一些限制。。。我建议去MongoDB看看。它似乎适合你目前的情况。祝你好运 谢谢大家!!为我工作。想知道是否需要
行=
。我把它漏掉了,效果很好。绝对没有必要。很好,我从示例中删除了它:)