サービスを作っていく際にCSVファイルをseedコマンドで読み込ませたかったので後で自分でも見返せるよう書いていきます。
CSVファイルとは
CSV = Comma-Separated Values
見辛いかもしれませんがカラムのデータがカンマ(,)で区切られたテキストファイルまたはデータのことです。
詳しくは分からないので深く知りたい方は調べてみてください。
ちなみにVsCodeを使っているかたはExcel viwerという便利な拡張機能があるのでインストールしてみるとCSVファイルが見えやすくなります。
https://marketplace.visualstudio.com/items?itemName=GrapeCity.gc-excelviewer
こんな感じです↓
本題から少し脱線してしまいましたが順を追って説明していきます。
CSVファイルを作成
macを使っている方ならnumbersというアプリでcsvファイルを簡単に作成する事が出来ます。
Excelでもメモ帳でもテキストエディタと呼ばれるものならなんでも作成可能みたいです
自分はMacを使っているのでnumbersを使った作成方法を紹介していきます。
自分の入れたいデータを打ち込んで行きましょう。
私はサンプルCSVを拾ってきたもので編集をしていないですがファイルの一番上の行ではカラム名を入れましょう。
例えば都道府県コードはただのidに都道府県名はprefectureなどにしてカラム名は任意に入れましょう。
データの入力が終わったらcsv形式にして保存しましょう。
画像のように「ファイル」→「書き出す」→「CSV」と選択していくだけです!
seedファイルの用意
作成したCSVファイルをrailsアプリのdbディレクトリに入れましょう。
ここで入れ込んだCSVファイルを確認しこの記事の一番最初にある画像のようにカンマで区切られているテキストファイルになっているか確認しましょう。
db/seedファイルの編集
require "csv"
CSV.foreach('db/seeds/csv/content.csv', headers: true) do |row|
Content.create(
title: row['title'],
image_url :row['image_url'],
director: row['director'],
description: row['description'],
open_date: row['open_date']
)
end
私はseedsフォルダを別で作りその中にcontent.csvファイルを入れているので'db/seeds/csv/content.csv'のような記述をしていますが'db/〇〇.csv'と書いても大丈夫です。
キーの部分にはテーブルのカラム名を、バリューにはCSVファイルの列を記入していきます。
それを可能にしているのが"headers: true"になります。
rake db:seedコマンドを入力
CSVファイルを作成しseeds.rbファイルに記述ができたらターミナルでコマンドを入力するだけです。
seedsファイルにコードを書いていればターミナルでrake db:seeds
自分のようにseedデータを分割して実行できるようにするにはrake db:seed:xxx.rbを打てば実行されるはず。
seedデータを分割する方法はこちらのサイトがわかりやすいです。
コマンドを実行したらrail cでコンソールでDB情報を確認してみましょう!
以上となりますが何か間違った情報など提供してましたらコメント欄でお伝えください!