DataBase/Mysql

TXT 파일 DB 입력

e코딩꼬라지 2023. 1. 12. 10:37

전국에 도로명 주소 테이블에 기초 데이터를 넣으려고 할때
기본 데이터는 | 구분으로 100만건이 넘는 데이터
도로명주소 데이터 받기 https://business.juso.go.kr/addrlink/main.do?cPath=99JM

1. 임시 테이블을 생성

CREATE TABLE 임시테이블명 (
    `COL1` int(10COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '시군구코드',
    `COL2` int(10COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '기초구간일련번호',
    `COL3` int(10COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '기초번호본번',
    `COL4` int(10COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '기초번호부번',
    `COL5` int(10COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '도로구간일련번호',
    `COL6` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '시도명',
    `COL7` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '시군구명',
    `COL8` int(20COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '읍면동코드',
    `COL9` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '읍면동명',
    `COL10` int(20COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '도로명코드',
    `COL11` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '도로명',
    `COL12` varchar(100COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '도로구간시점',
    `COL13` varchar(100COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '도로구간종점',
    `COL14` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '중심좌표_X',
    `COL15` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '중심좌표_Y',
    `COL16` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '도로이동사유코드',
    `COL17` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '변경일시',    
    `COL18` varchar(50COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '효력발생일',
  PRIMARY KEY (`COL1``COL2``COL3``COL4`)
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='도로명 데이터';



2. 도로명 테이블에 SELECT INSERT

INSERT INTO 도로명 테이블 (컬럼명, 컬럼명, 컬럼명, 컬럼명, ..., POINT_X, POINT_Y, POINT_XY)
SELECT 
    CONCAT(COL1, COL10) AS CODE
    , COL1 AS 컴럼명
    , COL3 AS 컴럼명
    , COL4 AS 컴럼명
    .
    .
    .
    , COL14 AS POINT_X
    , COL15 AS POINT_Y
    , ST_GeomFromText(CONCAT ('POINT(',COL14,' ',COL15,')'))
FROM 임시 테이블;