はじめに
- 駅JPというサイトのデータを利用して駅検索または地図上にプロッドする機能を実装してみる www.ekidata.jp
- 利用規約などにも利用可能と記載がある。
駅JPさんが提供しているデータ構造はこちら
- 下記の仕様書から転記しております。 ekidata.jp
ローカルに駅JPさんからのデータを格納するテーブルを作成する
Express / sequelizeのmigrationファイルを作成する
■companyテーブル
npx sequelize model:generate --name companies --underscored --attributes company_cd:integer,rr_cd:integer,company_name:string,company_name_k:string,company_name_h:string,company_name_r:string,company_url:string,company_type:integer,e_status:integer,e_sort:integer
■joinテーブル
npx sequelize model:generate --name joins --underscored --attributes line_cd:integer,station_cd1:integer,station_cd2:integer
■lineテーブル
npx sequelize model:generate --name lines --underscored --attributes line_cd:integer,company_cd:integer,line_name:string,line_name_k:string,line_name_h:string,line_color_c:string,line_color_t:string,line_type:integer,lon:dobule,lat:dobule,zoom:integer,e_status:integer,e_sort:integer
■stationテーブル
npx sequelize model:generate --name stations2 --underscored --attributes station_cd:integer,station_g_cd:integer,station_name:string,station_name_k:string,station_name_r:string,line_cd:integer,pref_cd:integer,post:string,address:string,lon:dobule,lat:dobule,open_ymd:string,close_ymd:string,e_status:integer,e_sort:integer
■prefsテーブル
npx sequelize model:generate --name prefs --underscored --attributes pref_cd:integer,pref_name:string
decimal型を指定する場合
- decimal型を指定する場合、migrationファイルを開くと 下記のように作成されて、そのままmigrateすると整数10桁、少数点0桁で生成される。
lon: { type: Sequelize.DECIMAL }, lat: { type: Sequelize.DECIMAL },
- 下記のように意図的に指定してからmigrateする必要がある
lon: { type: Sequelize.DECIMAL(10,8) }, lat: { type: Sequelize.DECIMAL(10,8) },
■migrate実行
npx sequelize-cli db:migrate
テーブルの作成確認
- テーブルが作成されていることが確認できる
mysql> show tables; +----------------+ | Tables_in_news | +----------------+ | SequelizeMeta | | companies | | joins | | lines | | prefs | | stations | | users | +----------------+
migrationの設定に間違えて、特定の箇所まで巻き戻したい場合
- toオプションを指定して巻き戻す。
-create-
はファイル名にcreateがなくても指定する。 - 下記の処理で巻き戻せる
npx sequelize-cli db:migrate:undo:all --to XXXXXXXXXXXXXX-create-prefs.js == 20200702233434-create-stations: reverting ======= == 20200702233434-create-stations: reverted (0.104s) == 20200702233408-create-lines: reverting ======= == 20200702233408-create-lines: reverted (0.067s) == 20200702233405-create-joins: reverting ======= == 20200702233405-create-joins: reverted (0.063s) == 20200702233400-create-companies: reverting ======= == 20200702233400-create-companies: reverted (0.040s) == 20200702233344-create-prefs: reverting ======= == 20200702233344-create-prefs: reverted (0.033s)