フリーランス 技術調査ブログ

フリーランス/エンジニア Ruby Python Nodejs Vuejs React Dockerなどの調査技術調査の備忘録

駅JPのデータを利用して何か開発する(Express/sequelizeでテーブルを作成するのみ) -STEP1-

はじめに

  • 駅JPというサイトのデータを利用して駅検索または地図上にプロッドする機能を実装してみる www.ekidata.jp
  • 利用規約などにも利用可能と記載がある。 f:id:PX-WING:20200703090531p:plain

駅JPさんが提供しているデータ構造はこちら

f:id:PX-WING:20200703090305p:plain

  • 下記の仕様書から転記しております。 ekidata.jp

ローカルに駅JPさんからのデータを格納するテーブルを作成する

  • データに関しては駅JPさんのサイトで会員登録してからCSVファイルをダウンロードできるので、会員登録してCSVファイルを自分のローカル環境に持ってきてください。

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)