実現したいこと
CSVファイルに入力されているデータをもとにデータベースへ初期データの投入をしたいと考えています。
db/seedsフォルダー直下にcsvをいくつかあるcsvフォルダーと、各csvファイルを実行するための分割されたseedファイルが保存されたscriptフォルダーがあり、seeds.rbを実行して、scriptフォルダー内のSeedファイルを実行するようにしています。
db
├── seeds
│ ├── csv
│ │ ├── NAWL.csv
│ │ ├── NGSL.csv
│ │ └── TSL.csv
│ └── script
│ ├── nawl.rb
│ ├── ngsl.rb
│ └── tsl.rb
└── seeds.rb
発生している問題・エラーメッセージ
afterward,その後,"『あとで』,以後,その後",I felt very light on my feet afterwards.,終わったあとも足が軽い感じがしました。,NAWL amongst,【前】~の間に;~の中の,=among,I don't like families that quarrel amongst themselves.,お互いに言い争いをする家族は嫌いです。,NAWL artistic,芸術的な,"『芸術的な』 芸術(美術)の;芸術家(美術家)の 美的感受性に富む,美のわかる",He turned his artistic gifts to good account by becoming a painter.,彼は画家になって芸術的な天分を生かした。,NAWL
CSVファイルのデータ内に改行箇所ができてしまい、Seedファイルを実行するとエラーが出てしまいます。
いくつか自分で調べてみましたが、なかなかうまくいきません。
どなたかよろしくお願いします。
seeds
require "csv" Dir[File.join(Rails.root, 'db', 'seeds', 'script', '*.rb')].sort.each do |seed| load seed end
db/script/seedファイル
require "csv" csv_text = File.read('db/seeds/csv/NAWL.csv', encoding: 'encoding') csv_text = csv_text.gsub /^$\n/, '' i = 0 @csv = CSV.parse(csv_text, headers: true, skip_blanks: true, row_sep: nil, col_sep: 'splitter') @csv.each do |row| Englishlist.create( word: row['word'], meaning: row['meaning'], commentary: row['commentary'], example: row['example'], example_meaning: row['example_meaning'], wordtype: row['Wordtype'] ) end
参考にしたサイト
(https://qiita.com/KTakata/items/86020670f84a1f858778)
(https://docs.ruby-lang.org/ja/2.0.0/method/CSV/s/new.html)
(https://qiita.com/swdyh/items/884a0cade2e5fcebfd8b)
まだ回答がついていません
会員登録して回答してみよう