Tag: import

从csv文件导入数据时无法批量分配受保护的属性

我有一个导入数据的表单,如下所示: 这是我的导入动作: def import require ‘csv’ csv_text = File.read(params[:file].tempfile.to_path.to_s) csv = CSV.parse(csv_text, headers: true ) csv.each do |row| row = row.to_hash.with_indifferent_access Course.create(row.to_hash.symbolize_keys) end flash[:success] = “Successfully import data.” redirect_to courses_url end 但当我选择一个文件并在浏览器中按下Import按钮时,我收到错误: ActiveModel::MassAssignmentSecurity::Error in CoursesController#import Can’t mass-assign protected attributes: Name, Code 在我的Course模型中, name和code已经是attr_accessible: class Course < ActiveRecord::Base attr_accessible :code, :name end 我的代码出了什么问题? 更新 这是我的csv文件: name, […]

如何将BIG SQL文件导入rails数据库?

我有一个非常庞大的(> 8mo)sql文件,基本上创建了2个表并用数据填充它们。 这是Sequel Pro生成的转储。 我的第一个想法是逐行读取文件并运行“执行”命令,但是我的错误是我的字符串太大了。 Mysql2 ::错误:有一个大于’max_allowed_pa​​cket’字节的数据包 有没有办法直接运行SQL文件而不是读取它并尝试执行? 仅供参考我可以将这个文件分成2个部分分别用于2个表格,但是我之后会有另一个更大的文件,并且不能分割。 我正在使用Rails 3.0.3与ActiveRecord和MySQL数据库。

使用ruby CSV模块导入csv文件时出现问题

我正在尝试使用Ruby的csv模块将csv文件中包含的记录导入到Ruby on Rails 3应用程序中的本地表中。 该表是通过创建模型Movie创建的。 这是我在控制台中执行的操作: require ‘csv’ CSV.foreach(‘public/uploads/VideoTitles2.csv’) do |row| record = Movie.new( :media_format => row[0], :title => row[1], :copies_at_home => row[2], :order => row[3] ) record.save end csv文件的行匹配(在数据类型中)它们传入的列。 这是我尝试导入的csv文件(VideoTitles2.csv)的缩短版本: “DVD”,”LEAP OF FAITH”,1,1 “DVD”,”COCOON”,1,2 “DVD”,”TITANIC”,1,3 每个记录用\ n分隔的地方我相信。 此csv文件是从Access导出的,其原始文件扩展名为.txt。 为了导入,我手动将其更改为.csv。 问题是,在rails控制台中执行上面的行后,我得到以下输出: => nil 导入似乎没有发生。 如果有人知道如何解决这个问题,我真的很感激。

在Rails中导入CSV – UTF-8中的非英文字符无效字节序列

我正在使用CSVMapper Gem将CSV文件中的一些记录导入到Rails 3模型中。 (我使用这个gem因为它是我发现的最简单的方法) 无论如何,我用来导入记录的代码如下: r = import(‘doc/socios_full.csv’) do map_to Associate after_row lambda{|row, associate| associate.save } start_at_row 1 [group,member,family_relationship_code,family_relationship_description,last_name,names,…] #The previous line is actually longer, with more atts, but it’s been cut to explain the example end 并且它工作得非常好,除非解析器遇到一些非英语字符,如ó, é, ñ, í, °… 那时我得到以下错误: ArgumentError: invalid byte sequence in UTF-8 from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1831:in `sub!’ from /home/bcb/.rvm/rubies/ruby-1.9.2-p136/lib/ruby/1.9.1/csv.rb:1831:in `block […]

Rails – 无法从CSV文件导入数据

我正在尝试从CSV文件导入数据,我不想保存文件。 我在这里找到了一个类似的问题: Ruby on Rails – 从CSV文件导入数据 但是,当我尝试使用此解决方案时,我收到错误。 我的表格如下: Import a CSV file Submit 在新页面上,此表单的提交调用create操作,然后create action调用该行: Product.import(params[:file]) 我的模型中有以下导入方法: def self.import(myfile) require ‘csv’ csv_text = File.read(myfile) csv = CSV.parse(csv_text, :headers => true) csv.each do |row| end end 其中’myfile’是params [:file]。 我知道我还没有对数据做任何事情。 我遇到行csv_text = File.read(myfile)的错误,这是:没有这样的文件或目录@ rb_sysopen – X.csv 在寻找我见过的解决方案时,使用了.path。 如果我将此行更改为csv_text = File.read(myfile.path)我会收到错误:“X.csv”的未定义方法`path’:String 有人可以帮忙吗? 我觉得我必须非常接近解决方案,但我只是在这两个错误之间四处走动。 是否有可能从csv获取数据而不先保存它? 谢谢你的时间

Rails 4 CSV导入值并将值设置为键值

我是一个完整的Rails n00b,我确信这是一件容易的事,但我遇到了麻烦。 我想在我的URL中获取密钥的值,并将其设置为我的数据库中记录的:category_id,因为我从csv导入该记录。 我可以通过在我的csv文件中创建category_id字段并使用以下代码导入文件来使其工作 def self.import(file) CSV.foreach(file.path, headers: true) do |row| record = Manufacturer.where(:category_id => row[1], :name => row[0] ).first_or_create record.save! end end 但是这需要将category_id添加到csv ..我想要做的就是这样 def self.import(file) CSV.foreach(file.path, headers: true) do |row| record = Manufacturer.where(:category_id => @category, :name => row[0] ).first_or_create record.save! end end 其中@category在URL中设置。 类似于:… localhost:3000 / manufacturers / import_manufacturer / 2?category_id = 2这保存了我的记录但是将类别id设置为“null” […]

导入CSV时,如何处理与关联对应的行中的数据?

我正在关注导入CSV Railscast ,它很直接。 问题是它只处理一个csv文件,该文件只包含1个文件中的1个模型中的信息。 说,我有一个CSV文件,我试图导入我的Listing模型。 在每行/列表上,它有一个名为Building的列,其中值实际上是该列表的building属性的名称(即@listing.building.name )。 如何在导入中处理这些情况? 这是Ryan在Railscast中获得的壁橱,Railscast在他的案例中属于Product模型: def self.import(file) CSV.foreach(file.path, headers: true) do |row| product = find_by_id(row[“id”]) || new product.attributes = row.to_hash.slice(*accessible_attributes) product.save! end end 所有发生的事情是他正在检查产品是否存在以及是否存在然后更新属性。 如果没有,则创建一个新的。 在这种情况下不太确定如何处理关联…特别是考虑到需要发生的事情是在相关记录不存在的情况下,需要在此过程中创建它。 所以回到我之前的building.name示例,如果没有Building.find_by_name(name) ,那么它应该创建一个新的构建记录。 思考?

如何将数据从ASCII(ISO / IEC 8859-1)导入到我的Rails / PGSQL数据库?

我正在尝试使用美国农业部发现的数据: http : //www.ars.usda.gov/Services/docs.htm? docid = 23634 ASCII(8.6Mb) – 该文件包含ASCII(ISO / IEC 8859-1)中的SR26数据,分隔文件。 这些表以关系格式组织,最好与关系数据库管理系统(RDBMS)一起使用,这将允许您形成自己的数据库查询并生成自定义报告。 我是新来操纵这样的数据,并认为我想用CSV格式,也许吧? 但是,那么我可能会失去关系,所以也许我应该去PGSQL。 不知道如何处理这个问题。 寻求指导,谢谢。

我该如何将这些数据导入我的数据库?

我有数千条记录的数据库 Code | Name | Price 00106 | Water | 9.99 00107 | Onion | 8.99 哪个编码在GES文件中,如下所示: 00F表示列标题 00I表示插入一行 还有其他像( 00D用于删除行或00U用于更新) 00F 0101 02Code 031 00F 0102 02Name 031 00F 0103 02Price 030 00I 0100106 02Water 030999 00I 0100107 02Onion 030899 我想创建处理此文件的导入程序并将其推送到我的数据库中。 所以我开始实现: class Importer CONN = ActiveRecord::Base.connection F = “00F” I = “00I” def […]

从CSV导入CSV小块记录(ruby on rails)

我需要导入一个大的CSV文件,细分为每隔X小时导入的小块。 我做了以下rake任务 task :import_reviews => :environment do require ‘csv’ CSV.foreach(‘reviews.csv’, :headers => true) do |row| Review.create(row.to_hash) end end 使用heroku调度程序我可以让这个任务每天运行,但我想在几个块中分解它,例如每天100条记录: 这意味着我需要跟踪导入的最后一行,并在下次让rake任务运行时从该行+ = 1开始,我该如何实现? 提前致谢!