概要
JIS X 0401:1973「都道府県コード」とISO 3166-2:2013:JP「国の下位区分コード」を結合して、都道府県名の漢字、カナ、英字表記をJSONデータに整備してみた。
都道府県コード JSON
以下のリンクからダウンロード可能
都道府県コードJSON
- "code":都道府県等コード
- "name":都道府県名(漢字)
- "kana_name":都道府県名カナ
- "half_upper":半角カナ(拗音・促音大書き)
- "full_lower":全角カナ(拗音・促音小書き)
- "en_name":都道府県名英字
- "en":ISO 3166-2:JPのLanguage codeがenのもの
- "ja":ISO 3166-2:JPのLanguage codeがjaのもの
- "start_date":適用開始年月日
適用開始日は、沖縄県を除いて「地方自治法(昭和22年4月17日法律第67号)」の施行日としている。
沖縄県については、「琉球諸島及び大東諸島に関する日本国とアメリカ合衆国との間の協定(昭和46年6月17日署名)」の発効日としている。
活用例
RDB(OracleとPostgreSQL)への挿入事例
Oracleの場合(Oracle12.2以降)
仮のJSONテーブルを作成しデータを全件挿入する。
(Oracle12.1以前だと「SQLエラー: ORA-00908: NULLキーワードがありません。」が発生する。)
CREATE TABLE TEMP_JSON (
V1 CLOB CONSTRAINT c1 CHECK(v1 IS JSON)
);
ORACLEのCLOBに4000バイトを超えるデータを挿入する場合は、4000バイト未満で区切る必要がある。
面倒なので、元のJSONデータを1行ずつ || TO_CLOB(' ~ ')
にしてみた。
INSERT INTO TEMP_JSON VALUES(
to_clob('{')
|| to_clob(' "_comment":"JIS X 0401:1973, ISO 3166-2:JP",')
|| to_clob(' "prefecture_list":[')
|| to_clob(' {"code":"01", "name":"北海道", "kana_name":{"half_upper":"ホツカイドウ", "full_lower":"ホッカイドウ"},')
|| to_clob(' "en_name":{"en":"Hokkaido", "ja":"Hokkaidô"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"02", "name":"青森県", "kana_name":{"half_upper":"アオモリケン", "full_lower":"アオモリケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Aomori"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"03", "name":"岩手県", "kana_name":{"half_upper":"イワテケン", "full_lower":"イワテケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Iwate"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"04", "name":"宮城県", "kana_name":{"half_upper":"ミヤギケン", "full_lower":"ミヤギケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Miyagi"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"05", "name":"秋田県", "kana_name":{"half_upper":"アキタケン", "full_lower":"アキタケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Akita"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"06", "name":"山形県", "kana_name":{"half_upper":"ヤマガタケン", "full_lower":"ヤマガタケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Yamagata"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"07", "name":"福島県", "kana_name":{"half_upper":"フクシマケン", "full_lower":"フクシマケン"},')
|| to_clob(' "en_name":{"en":"Fukushima", "ja":"Hukusima"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"08", "name":"茨城県", "kana_name":{"half_upper":"イバラキケン", "full_lower":"イバラキケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Ibaraki"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"09", "name":"栃木県", "kana_name":{"half_upper":"トチギケン", "full_lower":"トチギケン"},')
|| to_clob(' "en_name":{"en":"Tochigi", "ja":"Totigi"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"10", "name":"群馬県", "kana_name":{"half_upper":"グンマケン", "full_lower":"グンマケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Gunma"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"11", "name":"埼玉県", "kana_name":{"half_upper":"サイタマケン", "full_lower":"サイタマケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Saitama"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"12", "name":"千葉県", "kana_name":{"half_upper":"チバケン", "full_lower":"チバケン"},')
|| to_clob(' "en_name":{"en":"Chiba", "ja":"Tiba"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"13", "name":"東京都", "kana_name":{"half_upper":"トウキヨウト", "full_lower":"トウキョウト"},')
|| to_clob(' "en_name":{"en":"Tokyo", "ja":"Tôkyô"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"14", "name":"神奈川県", "kana_name":{"half_upper":"カナガワケン", "full_lower":"カナガワケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Kanagawa"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"15", "name":"新潟県", "kana_name":{"half_upper":"ニイガタケン", "full_lower":"ニイガタケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Niigata"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"16", "name":"富山県", "kana_name":{"half_upper":"トヤマケン", "full_lower":"トヤマケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Toyama"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"17", "name":"石川県", "kana_name":{"half_upper":"イシカワケン", "full_lower":"イシカワケン"},')
|| to_clob(' "en_name":{"en":"Ishikawa", "ja":"Isikawa"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"18", "name":"福井県", "kana_name":{"half_upper":"フクイケン", "full_lower":"フクイケン"},')
|| to_clob(' "en_name":{"en":"Fukui", "ja":"Hukui"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"19", "name":"山梨県", "kana_name":{"half_upper":"ヤマナシケン", "full_lower":"ヤマナシケン"},')
|| to_clob(' "en_name":{"en":"Yamanashi", "ja":"Yamanasi"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"20", "name":"長野県", "kana_name":{"half_upper":"ナガノケン", "full_lower":"ナガノケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Nagano"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"21", "name":"岐阜県", "kana_name":{"half_upper":"ギフケン", "full_lower":"ギフケン"},')
|| to_clob(' "en_name":{"en":"Gifu", "ja":"Gihu"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"22", "name":"静岡県", "kana_name":{"half_upper":"シズオカケン", "full_lower":"シズオカケン"},')
|| to_clob(' "en_name":{"en":"Shizuoka", "ja":"Sizuoka"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"23", "name":"愛知県", "kana_name":{"half_upper":"アイチケン", "full_lower":"アイチケン"},')
|| to_clob(' "en_name":{"en":"Aichi", "ja":"Aiti"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"24", "name":"三重県", "kana_name":{"half_upper":"ミエケン", "full_lower":"ミエケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Mie"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"25", "name":"滋賀県", "kana_name":{"half_upper":"シガケン", "full_lower":"シガケン"},')
|| to_clob(' "en_name":{"en":"Shiga", "ja":"Siga"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"26", "name":"京都府", "kana_name":{"half_upper":"キヨウトフ", "full_lower":"キョウトフ"},')
|| to_clob(' "en_name":{"en":"Kyoto", "ja":"Kyôto"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"27", "name":"大阪府", "kana_name":{"half_upper":"オオサカフ", "full_lower":"オオサカフ"},')
|| to_clob(' "en_name":{"en":"Osaka", "ja":"Ôsaka"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"28", "name":"兵庫県", "kana_name":{"half_upper":"ヒヨウゴケン", "full_lower":"ヒョウゴケン"},')
|| to_clob(' "en_name":{"en":"Hyogo", "ja":"Hyôgo"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"29", "name":"奈良県", "kana_name":{"half_upper":"ナラケン", "full_lower":"ナラケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Nara"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"30", "name":"和歌山県", "kana_name":{"half_upper":"ワカヤマケン", "full_lower":"ワカヤマケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Wakayama"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"31", "name":"鳥取県", "kana_name":{"half_upper":"トツトリケン", "full_lower":"トットリケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Tottori"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"32", "name":"島根県", "kana_name":{"half_upper":"シマネケン", "full_lower":"シマネケン"},')
|| to_clob(' "en_name":{"en":"Shimane", "ja":"Simane"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"33", "name":"岡山県", "kana_name":{"half_upper":"オカヤマケン", "full_lower":"オカヤマケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Okayama"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"34", "name":"広島県", "kana_name":{"half_upper":"ヒロシマケン", "full_lower":"ヒロシマケン"},')
|| to_clob(' "en_name":{"en":"Hiroshima", "ja":"Hirosima"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"35", "name":"山口県", "kana_name":{"half_upper":"ヤマグチケン", "full_lower":"ヤマグチケン"},')
|| to_clob(' "en_name":{"en":"Yamaguchi", "ja":"Yamaguti"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"36", "name":"徳島県", "kana_name":{"half_upper":"トクシマケン", "full_lower":"トクシマケン"},')
|| to_clob(' "en_name":{"en":"Tokushima", "ja":"Tokusima"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"37", "name":"香川県", "kana_name":{"half_upper":"カガワケン", "full_lower":"カガワケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Kagawa"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"38", "name":"愛媛県", "kana_name":{"half_upper":"エヒメケン", "full_lower":"エヒメケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Ehime"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"39", "name":"高知県", "kana_name":{"half_upper":"コウチケン", "full_lower":"コウチケン"},')
|| to_clob(' "en_name":{"en":"Kochi", "ja":"Kôti"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"40", "name":"福岡県", "kana_name":{"half_upper":"フクオカケン", "full_lower":"フクオカケン"},')
|| to_clob(' "en_name":{"en":"Fukuoka", "ja":"Hukuoka"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"41", "name":"佐賀県", "kana_name":{"half_upper":"サガケン", "full_lower":"サガケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Saga"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"42", "name":"長崎県", "kana_name":{"half_upper":"ナガサキケン", "full_lower":"ナガサキケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Nagasaki"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"43", "name":"熊本県", "kana_name":{"half_upper":"クマモトケン", "full_lower":"クマモトケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Kumamoto"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"44", "name":"大分県", "kana_name":{"half_upper":"オオイタケン", "full_lower":"オオイタケン"},')
|| to_clob(' "en_name":{"en":"Oita", "ja":"Ôita"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"45", "name":"宮崎県", "kana_name":{"half_upper":"ミヤザキケン", "full_lower":"ミヤザキケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Miyazaki"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"46", "name":"鹿児島県", "kana_name":{"half_upper":"カゴシマケン", "full_lower":"カゴシマケン"},')
|| to_clob(' "en_name":{"en":"Kagoshima", "ja":"Kagosima"}, "start_date":"1947-05-03"},')
|| to_clob(' {"code":"47", "name":"沖縄県", "kana_name":{"half_upper":"オキナワケン", "full_lower":"オキナワケン"},')
|| to_clob(' "en_name":{"en":null, "ja":"Okinawa"}, "start_date":"1972-05-15"}')
|| to_clob(' ]')
|| to_clob('}')
);
RDBっぽいテーブルを作成する。
CREATE TABLE PREF (
CODE CHAR(2) NOT NULL,
NAME VARCHAR2(12),
KANA VARCHAR2(24)
);
仮のJSONテーブルからINSERTする。
INSERT INTO PREF (CODE, NAME, KANA)
SELECT J.CODE, J.NAME, J.KANA
FROM TEMP_JSON,
JSON_TABLE(V1, '$.prefecture_list[*]'
COLUMNS(CODE VARCHAR2(2) PATH '$.code',
NAME VARCHAR(300) PATH '$.name',
KANA VARCHAR(300) PATH '$.kana_name.full_lower'
)
) as J
;
補足
公開情報のみから作成しているので、誰の権利も侵害していないと思います。
群馬県の英字表記については、外務省によるパスポートの英字表記がGummaとなるようですが、ISO 3166-2には記載がないです。
https://www.pref.gunma.jp/04/c3610022.html
JIS X 0401の参照元 : JIS検索
「JIS規格番号からJISを検索」にX0401を入力後、「一覧表示」ボタンを押下。
ISO 3166-2:JPの参照元 : ISO Online Browsing Platform (OBP)
「Country Codes」をチェックして、JPを入力後、「SEARCH」ボタンを押下。
検索結果画面の「Japan」がリンクになっているので、クリックする。