oracle

SQL*Loader 国土交通省住所データ取り込み

国土交通省のサイトから丁目レベルと、街区レベルの住所データを取り込みます。丁目レベルではJIS住所コード5桁+7桁独自コードで12桁の「住所コード」と緯度、経度情報が入っています。街区レベルでは街区符号・地番毎に緯度、経度情報が入っています。

位置参照情報 ダウンロードサービス

丁目レベルのデータ取り込み

丁目CSVファイルを取り込むテーブルを作成(KOKUDO_ADDRESS_CHOME)

以下DDLにて取り込むテーブルを作成する

CREATE TABLE SOONI.KOKUDO_ADDRESS_CHOME (
    LNO                  NUMBER
   ,ADDRESS_CODE         VARCHAR2(12 CHAR)   -- 大字町丁目コード(注1)
   ,PREFECTURES_CODE     VARCHAR2(2 CHAR)    -- 都道府県コード
   ,PREFECTURES_NAME     VARCHAR2(32 CHAR)   -- 都道府県名
   ,CITY_CODE            VARCHAR2(5 CHAR)    -- 市区町村コード
   ,CITY_NAME            VARCHAR2(64 CHAR)   -- 市区町村名
   ,OAZA_TOWN_CHOME_CODE VARCHAR2(7 CHAR) GENERATED ALWAYS AS (SUBSTR("ADDRESS_CODE",6,7)) VIRTUAL
   ,OAZA_TOWN_CHOME_NAME VARCHAR2(32 CHAR)   -- 大字町丁目名
   ,LATITUDE             NUMBER(11,8)        -- 緯度
   ,LONGITUDE            NUMBER(11,8)        -- 経度
   ,document_code        NUMBER              -- 原典資料コード(注2)
   ,chome_kubun_code     NUMBER
);
create unique index SOONI.UNI_IDX_KOKUDO_ADDRESS_CHOME on SOONI.KOKUDO_ADDRESS_CHOME (ADDRESS_CODE)
;

(注1) JIS市区町村コード+独自7桁
(注2) 大字・町丁目位置参照情報作成における原典資料を表すコード

SQLローダ(sqlldr)で取り込む際のコントロールファイル

以下をKOKUDO_ADDRESS_CHOME.ctlというファイル名(Windows環境で実施するのでShift_JIS)で作成する。CHARACTERSET JA16SJIS としてあるのは国土交通省から提供されているファイルがShift_JISで作成されているためです。

OPTIONS(ROWS=40000,READSIZE=209715200,BINDSIZE=209715200)
LOAD DATA CHARACTERSET JA16SJIS      --- 取込みファイルのエンコードを指定
-- 以下指定をすればパラメータで DATA項目の指定は不要
-- INFILE "26_kyoto\chome\26_2020.csv"  -- 取込みファイル名
APPEND                               -- 既存データに対して追加する場合
INTO TABLE KOKUDO_ADDRESS_CHOME      -- ロードするテーブル名
FIELDS TERMINATED BY ','             -- カンマ区切り
OPTIONALLY ENCLOSED BY '"'           -- ダブルクォートで囲っている場合
TRAILING NULLCOLS                    -- 列が行中に存在しない場合NULLとして扱う
(
 LNO SEQUENCE(MAX,1)   -- 項目最大値+増分値でセット
,PREFECTURES_CODE      CHAR
,PREFECTURES_NAME      CHAR
,CITY_CODE             CHAR
,CITY_NAME             CHAR
,ADDRESS_CODE          CHAR
,OAZA_TOWN_CHOME_NAME  DECIMAL EXTERNAL
,LATITUDE              DECIMAL EXTERNAL
,LONGITUDE             DECIMAL EXTERNAL
,DOCUMENT_CODE         DECIMAL EXTERNAL
,CHOME_KUBUN_CODE      DECIMAL EXTERNAL
)
SQLローダ(sqlldr)の実行
sqlldr sooni/sooni@vm102/ora19.box control=KOKUDO_ADDRESS_CHOME.ctl skip=1 DATA='01000-15.0b\01_2021.csv'
D:\ldrtest>sqlldr sooni/sooni@vm102/ora19.box control=KOKUDO_ADDRESS_CHOME.ctl skip=1 DATA='01000-15.0b\01_2021.csv'

SQL*Loader: Release 19.0.0.0.0 - Production on 日 12月21 23:34:48 2022
Version 19.15.0.0.0

Copyright (c) 1982, 2022, Oracle and/or its affiliates.  All rights reserved.

使用パス:      従来型
コミット・ポイントに達しました - 論理レコード件数25980

表KOKUDO_ADDRESS_CHOME:
  25980 行は正常にロードされました。

確認するログ・ファイル:
  KOKUDO_ADDRESS_CHOME.log
ロードの詳細を参照してください。

D:\ldrtest>

街区レベルのデータ取り込み

街区CSVファイルを取り込むテーブルを作成(KOKUDO_ADDRESS_GAIKU)

以下DDLにて取り込むテーブルを作成する

CREATE TABLE SOONI.KOKUDO_ADDRESS_GAIKU ( 
    LNO                         NUMBER,
    PREFECTURES_NAME            VARCHAR2(32 CHAR),  -- 都道府県名
    CITY_NAME                   VARCHAR2(64 CHAR),  -- 市区町村名
    OAZA_TOWN_CHOME_NAME        VARCHAR2(32 CHAR),  -- 大字・丁目名
    KOAZA_ALIAS                 VARCHAR2(64 CHAR),  -- 小字・通称名
    BLOCK_NUMBER                VARCHAR2(10 CHAR),  -- 街区符号
    COORDINATE_SYSTEM_NUMBER    NUMBER,             --座標系番号
    X_COORDINATE                NUMBER(11,3),      --X座標
    Y_COORDINATE                NUMBER(11,3),      --Y座標
    LATITUDE                    NUMBER(12,8),      -- 緯度
    LONGITUDE                   NUMBER(12,8),      -- 軽度
    RESIDENCE_DISPLAY_FLAG      VARCHAR2(4 CHAR),  -- 住居表示フラグ
    REPRESENT_FLAG              VARCHAR2(4 CHAR),  --代表フラグ
    BEFORE_UPDATE_HISTORY_FLAG  VARCHAR2(4 CHAR),  -- 更新前履歴フラグ
    AFTER_UPDATE_HISTORY_FLAG   VARCHAR2(4 CHAR)   -- 更新後履歴フラグ
);
SQLローダ(sqlldr)で取り込む際のコントロールファイル

以下をKOKUDO_ADDRESS_GAIKU.ctlというファイル名(Windows環境で実施するのでShift_JIS)で作成する。CHARACTERSET JA16SJIS としてあるのは国土交通省から提供されているファイルがShift_JISで作成されているためです。(都道府県単位のファイルでしかダウンロードできないのが不便です。)

OPTIONS(ROWS=40000,READSIZE=209715200,BINDSIZE=209715200)
--,BINDSIZE=25600000,READSIZE=104857600
LOAD DATA CHARACTERSET JA16SJIS      --- 取込みファイルのエンコードを指定
INFILE "26_kyoto\gaiku\26_2020.csv"  -- 取込みファイル名
APPEND                               -- 既存データに対して追加する場合
INTO TABLE KOKUDO_ADDRESS_GAIKU      -- ロードするテーブル名
FIELDS TERMINATED BY ','             -- カンマ区切り
OPTIONALLY ENCLOSED BY '"'           -- ダブルクォートで囲っている場合
TRAILING NULLCOLS                    -- 列が行中に存在しない場合NULLとして扱う
(
 LNO SEQUENCE(MAX,1)   -- 項目最大値+増分値でセット
,PREFECTURES_NAME             CHAR
,CITY_NAME                    CHAR
,OAZA_TOWN_CHOME_NAME         CHAR
,KOAZA_ALIAS                  CHAR
,BLOCK_NUMBER                 CHAR
,COORDINATE_SYSTEM_NUMBER     DECIMAL EXTERNAL
,X_COORDINATE                 DECIMAL EXTERNAL
,Y_COORDINATE                 DECIMAL EXTERNAL
,LATITUDE                     DECIMAL EXTERNAL
,LONGITUDE                    DECIMAL EXTERNAL
,RESIDENCE_DISPLAY_FLAG       CHAR
,REPRESENT_FLAG               CHAR
,BEFORE_UPDATE_HISTORY_FLAG   CHAR
,AFTER_UPDATE_HISTORY_FLAG    CHAR
)
SQLローダ(sqlldr)の実行
sqlldr sooni/sooni@vm102/ora19.box control=KOKUDO_ADDRESS_GAIKU.ctl skip=1 DATA='01000-20.0a\01_2021.csv'
D:\ldrtest>sqlldr sooni/sooni@vm102/ora19.box control=KOKUDO_ADDRESS_GAIKU.ctl skip=1 DATA='01000-20.0a\01_2021.csv'

SQL*Loader: Release 19.0.0.0.0 - Production on 日 12月21 22:49:16 2022
Version 19.15.0.0.0

Copyright (c) 1982, 2022, Oracle and/or its affiliates.  All rights reserved.

使用パス:      従来型
コミット・ポイントに達しました - 論理レコード件数40000
コミット・ポイントに達しました - 論理レコード件数80000
コミット・ポイントに達しました - 論理レコード件数120000
コミット・ポイントに達しました - 論理レコード件数160000
コミット・ポイントに達しました - 論理レコード件数200000
コミット・ポイントに達しました - 論理レコード件数240000
コミット・ポイントに達しました - 論理レコード件数280000
コミット・ポイントに達しました - 論理レコード件数320000
コミット・ポイントに達しました - 論理レコード件数339280

表KOKUDO_ADDRESS_GAIKU:
  339280 行は正常にロードされました。

確認するログ・ファイル:
  KOKUDO_ADDRESS_GAIKU.log
ロードの詳細を参照してください。

D:\ldrtest>
スポンサーリンク
コピペで使う