Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
18
Help us understand the problem. What is going on with this article?
@taccaya

Railsで、DBからCSVファイルを読み込む方法

More than 3 years have passed since last update.

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をインポート・エクスポートする

18
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
taccaya

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
18
Help us understand the problem. What is going on with this article?