CSVファイルをインポートするときにinvalid byte sequence in UTF-8エラーがでる場合の対処法

rake db:seedでCSVファイルをインポートする時の備忘録

CSVファイルでマスタの一括インポートをしようとすると以下のようなエラーが出た

$ rake db:seed
rake aborted!
invalid byte sequence in UTF-8
/path/to/application/db/seeds.rb:11:in `<top (required)>'
Tasks: TOP => db:seed
(See full trace by running task with --trace)

文字コードのエラーが出ているらしい。

通常CSVはExcelとかでも見れるようにShift-jisとかにしているので、データを抽出する際に文字コードを変更してあげるようにする

require 'csv'

CSV.foreach('db/hogehoge.csv', encoding: 'Shift_JIS:UTF-8') do |row|
  Model.create(key: row[0], value: row[1])
end