🐰
Rails の db:seed 時に、json ファイルをインポートしたい
Ruby on Rails では、データベースに初期データを投入するために使用できる db:seed という機能があります。
seeds.rb にスクリプトを書くことで簡単にテストデータを投入することができるため、開発環境下で便利に使うことができます。
今回は、seeds.rb 上で、json ファイルを読み込んでデータベースへ投入するスクリプトを備忘録として残します。
json について
こんな感じのデータを User モデルとして登録する想定です。
json の配列データです。
sample.json
[
{
"uid": "0001",
"name": "名前",
"name_ruby": "ナマエ",
"age": "36",
"pref": "山形県",
"pref_code": "06"
},
......略
投入
seeds.rb に下記を追記します。
ファイル読み込み → JSON 形式にデコード → ループで回して DB に投入していく。
seeds.rb
u_json = ActiveSupport::JSON.decode(File.read(
Rails.root.join("db", "sample.json")
))
u_json.each do |d|
User.create(
uid: d["uid"],
name: d["name"],
name_ruby: d["name_ruby"],
age: d["age"],
pref: d["pref"],
pref_code: d["pref_code"]
)
end
さいごに
こんな感じのデータを10万件ほど用意して db:seed したところ、2 時間くらいかかった + 何度かタイムアウトが発生したので、注意。
短くなりましたが、よく使うようになりそうなので残しました。
参考
Discussion