csv_file_icon_35669-300x300.jpg

事前に用意してあるCSVデータをDB(データベース)にインポートする方法を学んだので、簡潔にまとめておきたいと思います。

CSVファイルとは?

CSVとは、Character-Separated Valuesの略で、各項目がカンマ文字で区切られているのが特徴。カンマで区切られたデータの横一列を"行"(Row)、縦一列を"列"(Column)と呼ぶ。

サンプル

hoge.csv
"名前","郵便番号","住所"

dbディレクトリに、対象のCSVファイルを用意

dbディレクトリに、対象のデータが記載されているcsvファイルを用意しておく。※ここでは、対象のファイルをhoge.csvとする。

seeds.rbに、hoge.csvを読み込むためのコードを記述

seeds.rb
require "csv"
#csvファイルを扱うためのgemを読み込む

CSV.foreach('db/hoge.csv') do |row|
#foreachは、ファイル(hoge.csv)の各行を引数として、ブロック(do~endまでを範囲とする『引数のかたまり』)を繰り返し実行する
#rowには、読み込まれた行が代入される

User.create(:name => row[0], :zipcode => row[1], :address => row[2]) 
#usersテーブルの各カラムに、各行のn番目の値を代入している。

end

seeds.rbを実行する

rake db:seed

これでseeds.rbが実行され、テーブルにデータが追加される。

ちなみに

データの追加にcreateメソッドを使っているので、modelにバリデーションをかけていれば、それがトリガーされる。データの検証に手間をかけなくてもよかったのでありがたかった。

参考:

rake db:seedを使った初期データの投入
よく使うFileクラスを使ったファイル読み込み処理
Rubyのブロックの使い方、使い道まとめ
Ruby On RailsでDBからCSVをインポート・エクスポートする

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.