国土交通省のサイトから丁目レベルと、街区レベルの住所データを取り込みます。丁目レベルでは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> 
  
  
  
  
