Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 尝试导入CSV数据时出错Transaction.new进入Rails应用程序_Ruby On Rails_Ruby_Ruby On Rails 3_Csv - Fatal编程技术网

Ruby on rails 尝试导入CSV数据时出错Transaction.new进入Rails应用程序

Ruby on rails 尝试导入CSV数据时出错Transaction.new进入Rails应用程序,ruby-on-rails,ruby,ruby-on-rails-3,csv,Ruby On Rails,Ruby,Ruby On Rails 3,Csv,我尝试将CSV文件导入Rails应用程序中的数据库。我跟着 这是我的密码: # db/seeds.rb require 'csv' csv_text = File.read(Rails.root.join('lib', 'seeds', 'siren_db.csv')) csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1') csv.each do |row| t = Transaction.

我尝试将CSV文件导入Rails应用程序中的数据库。我跟着

这是我的密码:

# db/seeds.rb
require 'csv'

csv_text = File.read(Rails.root.join('lib', 'seeds', 'siren_db.csv'))
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1')
csv.each do |row|
  t = Transaction.new
  t.siren = row['siren']
  t.nom = row['nom']
  t.adresse = row['adresse']
  t.complement_adresse = row['complement_adresse']
  t.pays = row['pays']
  t.region = row['region']
  t.departement = row['departement']
  t.activite = row['activite']
  t.date = row['date']
  t.nb_salaries = row['nb_salaries']
  t.nom = row['nom']
  t.prenom = row['prenom']
  t.civilite = row['civilite']
  t.adr_mail = row['adr_mail']
  t.libele_acti = row['libele_acti']
  t.categorie = row['categorie']
  t.tel= row['tel']
  t.save
  puts "#{t.siren}, #{t.nom} saved"
end

puts "There are now #{Transaction.count} rows in the transactions table"
不幸的是,我有一个错误,但不知道为什么?(我的代码与要点完全相同):

雷克流产了!NameError:未初始化的常量事务 /Users/nicolasleroux/Public/sites/sirenforest/db/seeds.rb:6:在块中 在' /Users/nicolasleroux/Public/sites/sirenforest/db/seeds.rb:5:in'Tasks:TOP=>db:seed(通过运行任务查看完整跟踪 使用--trace)

更新 剧本很好,但是所有的东西都充满了“nill”。。。这是我的密码:

#db/migrate/create_transaction
class CreateTransactions < ActiveRecord::Migration[5.0]
  def change
    create_table :transactions do |t|
      t.integer :siren
      t.string :nom_ent
      t.string :adresse
      t.string :complement_adresse
      t.string :pays
      t.string :region
      t.integer :departement
      t.string :activite
      t.integer :date
      t.string :nb_salaries
      t.string :nom
      t.string :prenom
      t.string :civilite
      t.string :adr_mail
      t.string :libele_acti
      t.string :categorie
      t.integer :tel

      t.timestamps
    end
  end
end

#model transaction
class Transaction < ApplicationRecord
end

看这张1。设置部分,它是这样说的:

$ rails generate model Transaction street:text city:string etc...
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
确保已创建具有适当列的资源,以匹配种子数据。名字不必匹配

您必须在rails应用程序中生成事务模型,如下所示:

$ rails generate model Transaction street:text city:string etc...
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
有关适当的列,请参见第5节的要点

更新: 您应该为CSV文件指定如下分隔符:

$ rails generate model Transaction street:text city:string etc...
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
此外,散列键应该和csv文件中的一样是大写的,并且您有相同的列名,应该是唯一的(t.nom)。完整代码:

csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
csv.each do |row|
   t = Transaction.new
   t.siren = row['SIREN']
   t.nom = row['NOM'] # => 2 same columns
   t.adresse = row['ADRESSE']
   t.complement_adresse = row['COMPLEMENT_ADRESSE']
   t.pays = row['PAYS']
   t.region = row['REGION']
   t.departement = row['DEPARTEMENT']
   t.activite = row['ACTIVITE']
   t.date = row['DATE']
   t.nb_salaries = row['NB_SALARIES']
   t.nom = row['NOM'] # => 2 same columns
   t.prenom = row['PRENOM']
   t.civilite = row['CIVILITE']
   t.adr_mail = row['ADR_MAIL']
   t.libele_acti = row['LIBELE_ACTI']
   t.categorie = row['CATEGORIE']
   t.tel= row['TEL']
   t.save
puts "#{t.siren}, #{t.nom} saved"
end

puts "There are now #{Transaction.count} rows in the transactions table"

看这张1。设置部分,它是这样说的:

$ rails generate model Transaction street:text city:string etc...
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
确保已创建具有适当列的资源,以匹配种子数据。名字不必匹配

您必须在rails应用程序中生成事务模型,如下所示:

$ rails generate model Transaction street:text city:string etc...
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
有关适当的列,请参见第5节的要点

更新: 您应该为CSV文件指定如下分隔符:

$ rails generate model Transaction street:text city:string etc...
csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
此外,散列键应该和csv文件中的一样是大写的,并且您有相同的列名,应该是唯一的(t.nom)。完整代码:

csv = CSV.parse(csv_text, :headers => true, :encoding => 'ISO-8859-1', :col_sep => ';' )
csv.each do |row|
   t = Transaction.new
   t.siren = row['SIREN']
   t.nom = row['NOM'] # => 2 same columns
   t.adresse = row['ADRESSE']
   t.complement_adresse = row['COMPLEMENT_ADRESSE']
   t.pays = row['PAYS']
   t.region = row['REGION']
   t.departement = row['DEPARTEMENT']
   t.activite = row['ACTIVITE']
   t.date = row['DATE']
   t.nb_salaries = row['NB_SALARIES']
   t.nom = row['NOM'] # => 2 same columns
   t.prenom = row['PRENOM']
   t.civilite = row['CIVILITE']
   t.adr_mail = row['ADR_MAIL']
   t.libele_acti = row['LIBELE_ACTI']
   t.categorie = row['CATEGORIE']
   t.tel= row['TEL']
   t.save
puts "#{t.siren}, #{t.nom} saved"
end

puts "There are now #{Transaction.count} rows in the transactions table"


你是否有一个名为
Transaction
的模型,或者你只是不假思索地复制/粘贴了要点代码?确实,很抱歉,我只是从Rails开始。。。对于方法t.name,我应该在模型中写入什么?您需要创建一个模型来描述此数据将填充的实体。我的意思是,如果你的简历文件中的每一行都代表一个客户,例如,你需要创建一个客户模型,其中包含你要导入的所有列(siren、nom、adrese…)。在你继续之前阅读以下内容:你是否有一个名为
Transaction
的模型,或者你只是不假思索地复制/粘贴了要点代码?确实,抱歉,我只是从Rails开始。。。对于方法t.name,我应该在模型中写入什么?您需要创建一个模型来描述此数据将填充的实体。我的意思是,如果你的简历文件中的每一行都代表一个客户,例如,你需要创建一个客户模型,其中包含你要导入的所有列(siren、nom、adrese…)。继续之前请阅读:所以我在迁移文件中添加了列,它应该可以工作?@AlphaNico是的。它可以工作,但我不知道为什么所有的列都是nill。。。我已在中更新了我的代码question@AlphaNico迁移模型后是否运行了
rake db:seed
命令?此命令将运行db/seeds.rb文件,因此它将根据此db/seeds.rb文件填充事务表是的。实际上,我不确定我的csv文件是否具有与要点相同的结构。我有不同类别的列,然后有数千行填充这些列。似乎要点正好相反:行中有类别,然后列填充它们否?所以我在迁移文件中添加列,它应该可以工作?@AlphaNico是的。它可以工作,但我不知道为什么所有内容都填充nill。。。我已在中更新了我的代码question@AlphaNico迁移模型后是否运行了
rake db:seed
命令?此命令将运行db/seeds.rb文件,因此它将根据此db/seeds.rb文件填充事务表是的。实际上,我不确定我的csv文件是否具有与要点相同的结构。我有不同类别的列,然后有数千行填充这些列。似乎要点正好相反:行中有类别,然后列中填充类别否?