Railsアプリケーションのスプレッドシートからかなりのデータを抽出することを検討していますが、Railsコンソールから抽出しています。ExcelスプレッドシートからRubyのデータベースにデータを抽出する
私のデータベースには現在約170のレコードがあるテーブルinstititutes
があります。私はc.1000レコードのスプレッドシートではるかに優れたデータを見つけて、それをデータベースにインポートしたいが、すでに一致しているレコードはスキップしたい。
私はfind_or_create_byメソッドを使用することがこれのための最良の方法だと思っていました。スプレッドシートはヘッダーとしてUKPRN
とNAME
を持ち、表はukprn
とname
をそれぞれの列(および他のもの)として持っています。 Rooの宝石を使用して
は、私がこれまでのところ、これを持っている:
require 'roo'
xlsx = Roo::Spreadsheet.open(File.expand_path('../Downloads/UKPRN.xlsx'))
xlsx.default_sheet = xlsx.sheets.last
header = xlsx.row(1)
xlsx.each_row do |row|
row = Institute.find_or_create_by(UKPRN: ukprn , NAME: name)
end
これはエラーNameError: unitialized constant UKPRN
を与えています。私はまだ私の頭をRubyに戻しているので、どんな助けもありがとう。
私はRubyの2.2.3とRails 5.0.1
編集使用しています:
p row
ショー:
["UKPRN", "NAME"]
[10000291, "Anglia Ruskin University"]
[10000385, "The Arts University Bournemouth"]
[10000571, "Bath Spa University"]
[10000712, "University College Birmingham"]
[10000824, "Bournemouth University"]
[10000886, "The University of Brighton"]
[10000961, "Brunel University London"]
...etc
'p行'は 'each_行? '行=研究所... 'がなければ –