都道府県・市町村のデータをmysqlのデータベースに登録する事を考えています。
SQL INSERT文を用いて、都道府県・市町村データを手打ちする以外の方法を探しています。
現在の都道府県・市町村データの取り方は、
https://teratail.com/questions/16583
のKosuke_Shibuyaさんの回答を参考しました。
ここに書かれている様に、mst_addressテーブル、mst_address_miniテーブルに取り込みました。
やりたいことは、データを利用するソフトの設計上、
そこからさらに都道府県のみのテーブル/市町村のみのテーブルに分割したいのです。
officialCodeで管理するのではなく、AUTO_INCREMENTなプライマリキーで管理したいのです。
都道府県データは、officialCode順でソートされた都道府県名を、AUTO_INCREMENTなプライマリキーで登録したいのです。
市町村データは、officialCode順でソートされた市町村名を、AUTO_INCREMENTなプライマリキーで登録したいのです。
後もう一歩な感じがするのですが、どなたか教えて頂けますでしょうか。
・都道府県リスト、市町村リスト
lang
1CREATE TABLE PrefectureList( PrefectureID smallint(3) unsigned NOT NULL AUTO_INCREMENT, 2 PrefectureName varchar(32) NOT NULL, 3 PRIMARY KEY (PrefectureID) 4 ) ENGINE=InnoDB; 5CREATE TABLE CityList( CityID int(10) unsigned NOT NULL AUTO_INCREMENT, 6 PrefectureID smallint(3) unsigned NOT NULL, 7 CityName varchar(64) NOT NULL, 8 PRIMARY KEY(CityID), 9 FOREIGN KEY(PrefectureID) REFERENCES PrefectureList(PrefectureID) 10 ) ENGINE=InnoDB;
・試してみたこと
lang
1INSERT INTO PrefectureList(PrefectureID,PrefectureName) SELECT 0,pref FROM mst_address_mini GROUP BY pref;
prefの値の順序で並んでいる様です。
lang
1mysql>INSERT INTO PrefectureList(PrefectureID,PrefectureName) SELECT 0,pref FROM mst_address_mini GROUP BY pref,officialCode ORDER BY officialCode; 2Query OK, 1896 rows affected (0.04 sec) 3Records: 1896 Duplicates: 0 Warnings: 0
重複している様でした。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/04 06:13