Laravelで開発をしていると、初期データとして大量のレコード(CSVファイル)をDBに流し込む作業はよく発生したりします。
そんなとき、自分の場合は "goodby/csv" というパッケージを使って、シーダー機能でCSVデータを流し込みます。
今回はシーダー機能を使ってのCSVファイルのインポートについてエントリーします。
やりたいこと
サイトを作るときに必ずと言っていいほど作る "都道府県マスタ"。
都道府県テーブルを作成し、都道府県のCSVデータをLaravelのシーダー機能を使ってインポートします。
手順
パッケージのインストール
Composer で「goodby csv」パッケージをインストールします。
Composerコマンドの使い方については以下をご参考ください。
テーブルの作成(マイグレーション)
マイグレーションファイルの作成。
自動生成されたマイグレーションファイル(database/migrations/****_**_create_prefs_table.php)を以下のようにコーディングします。
マイグレーションの実行
これで「都道府県」のテーブルは作成できました。
モデルの作成
「都道府県」テーブルのモデルを作成します。
artisanコマンドでスケルトンの作成。
自動生成されたモデルに中身を入れていきます。
CSVファイルの用意
以下のようなCSVファイルを用意します。
database/seeds/pref_utf8.csv に設置します。
シーダーファイルの編集
シーダーファイルのスケルトン作成。
自動生成されたシーダーファイル(PrefTableSeeder)を編集。
シーダーの実行
シーダーの実行
実演
確認作業
CSVのデータがデータベースにちゃんと入っているか確認します。
下記のようになっていればOKです。
以上です。

仕事で Laravel を使っています。気づいたことや新しい発見など情報を発信していきます。問い合わせはこちら。