【Rails】都道府県・市区町村データをseedで取得・インポートする

Railsで都道府県・市区町村のZIPファイルからCSVファイルに変換し、シードにて都道府県・市区町村データをインポートする方法を紹介します。

都道府県・市区町村のマイグレーション作成

まずは、都道府県・市区町村のマイグレーションファイルを作成します。

・db/migrate/20200101000001_create_prefectures.rb

 

・db/migrate/20200101000002_create_cities.rb

 

都道府県・市区町村のモデル作成

都道府県と市区町村のモデル作成します。1対多のリレーションもはっておきます。

・app/models/prefecture.rb

 

・app/models/city.rb

 

seed.rbで都道府県・市区町村データを取得し、テーブルに保存

seed.rbファイルに都道府県・市区町村データを取得し、テーブルに保存する処理を書いていきます。

今回は日本郵便の都道府県ZIPファイルのダウンロードURLから取得していきます。一度ファイルをダウンロードして、Railsプロジェクトに格納してから、そこを参照して取得しても良いかと思います。

ZIPファイルを一度CSVファイルに変換し、db/配下に保存します。

その後、保存したCSVファイルから都道府県名と市区町村名のカラムを取得し、先ほど作成した都道府県と市区町村のテーブルに挿入していきます。

全取得が完了したら、保存していたCSVファイルを削除して完了です。

・db/seeds.rb

以上、都道府県・市区町村データをseedで取得・インポートする方法でした。