전국에 도로명 주소 테이블에 기초 데이터를 넣으려고 할때
기본 데이터는 | 구분으로 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 임시 테이블;

'DataBase > Mysql' 카테고리의 다른 글

공간 데이터 입력  (0) 2023.01.12
foreach insert update  (0) 2023.01.09
INSERT UPDATE  (0) 2022.12.27
mysql 문자열 관련 함수  (0) 2022.12.27
테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27

- 공간 테이블 생성

CREATE TABLE 테이블명 (
    컬럼명 VARCHAR(11NOT NULL,
    컬러명 VARCHAR(3NOT NULL,
    POINT_XY POINT ,
    LINE_STRING LINESTRING,
    PRIMARY KEY (`컴럼명``컬럼명`)
);




* POINT는 X, Y 좌표 * LINESTRING 라인 폴리곤 - 공간 데이터 입력

INSERT INTO 테이블명 VALUES ( '1''1', ST_GeomFromText('POINT(126.9052383 37.5157702)'), NULL);




- 공간 데이터 수정

UPDATE 테이블명 SET POINT_XY = ST_GeomFromText(CONCAT ('POINT(',POINT_X,' ',POINT_Y,')')) WHERE 컴럼명 = 1;




- 해당 위치 10K 내외 데이터 구하기

SELECT 
    컬럼명, 
    ST_Distance_Sphere(POINT(126.901953237.5170112), 공간 컬럼명) AS POINT_XY
FROM 테이블명
WHERE ST_Distance_Sphere(POINT(126.901953237.5170112), 공간 컬러명) <= 10000




- 공간 테이블 X, Y 좌표 조회

SELECT ST_ASTEXT(공간 컬럼명) AS POINT_XY, ST_X(공간 컬럼명), ST_Y(공간 컬러명) FROM 테이블명;

'DataBase > Mysql' 카테고리의 다른 글

TXT 파일 DB 입력  (0) 2023.01.12
foreach insert update  (0) 2023.01.09
INSERT UPDATE  (0) 2022.12.27
mysql 문자열 관련 함수  (0) 2022.12.27
테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27
<insert id="insert" parameterType="java.util.List">
    INSERT INTO 테이블명
        (컬러명)
    VALUES 
    <foreach collection="list" item="item" separator=",">
    <![CDATA[ 
        (#{item.컬럼명})
    ]]>
    </foreach>
    ON DUPLICATE KEY UPDATE
        컬럼명 = values(컬럼명)
        , 컬럼명 = values(컬럼명)
</insert>

'DataBase > Mysql' 카테고리의 다른 글

TXT 파일 DB 입력  (0) 2023.01.12
공간 데이터 입력  (0) 2023.01.12
INSERT UPDATE  (0) 2022.12.27
mysql 문자열 관련 함수  (0) 2022.12.27
테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27

INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;

UNIQUE 하면 Insert 중복된다면 Update 

'DataBase > Mysql' 카테고리의 다른 글

공간 데이터 입력  (0) 2023.01.12
foreach insert update  (0) 2023.01.09
mysql 문자열 관련 함수  (0) 2022.12.27
테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27
문자열필드를 숫자로 형변환  (0) 2022.12.27

▶ ASCII(문자) : 문자의 아스키 코드값 리턴.
SELECT ASCII('문자');
select ascii('A');

▶ CONCAT('문자열1','문자열2','문자열3'...) : 문자열들을 이어준다.
select concat('ASP,','PHP,','SQL',' WEB STUDY');

▶ INSERT('문자열','시작위치','길이','새로운문자열') : 문자열의 시작위치부터 길이만큼 새로운 문자열로 대치
'시작위치' 와 '길이'는 문자열이 아니므로 작은따옴표로 굳이 묶어주지 않아도 된다.
select insert('MySql web study','7','3','offline');
select insert('MySql web study',7,3,'offline');

▶ REPLACE('문자열','기존문자열','바뀔문자열') : 문자열 중 기존문자열을 바뀔 문자열로 바꾼다.
select replace('MySql web study','web','offline');

▶ INSTR('문자열','찾는문자열') : 문자열 중 찾는 문자열의 위치값을 출력
--값이 존재하지 않으면 0값 리턴
select instr('MySql web study','s');
select instr('MySql web study','S');

▶ LEFT('문자열',개수) : 문자열 중 왼쪽에서 개수만큼을 추출.
select left('MySql web study',5);
select left('MySql web study','5');

▶ RIGHT('문자열',개수) : 문자열 중 오른쪽에서 개수만큼을 추출.
select right('MySql web study',5);
select right('MySql web study','5');

▶ MID('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력
select mid('MySql web study',7,3);
select mid('MySql web study','7','3');

▶ SUBSTRING('문자열',시작위치,개수) : 문자열 중 시작위치부터 개수만큼 출력
select substring('Mysql web study',11,5);
select substring('Mysql web study','11','5');

▶ LTRIM('문자열') : 문자열 중 왼쪽의 공백을 없앤다.
select ltrim(' web study');

▶ RTRIM('문자열') : 문자열 중 오른쪽의 공백을 없앤다.
select rtrim('web study ');

▶ TRIM('문자열') : 양쪽 모두의 공백을 없앤다.
select trim(' web study ');

▶ LCASE('문자열') 또는 LOWER('문자열') : 소문자로 바꾼다.
select lcase('MYSQL');
select lower('MySQL');

▶ UCASE('문자열') 또는 UPPER('문자열') : 대문자로 바꾼다.
select ucase('mySql');
select upper('mysql');

▶ REVERSE('문자열') : 문자열을 반대로 나열한다.
예) REVERSE('abcde') ==> edcba
select reverse('lqSyM');

'DataBase > Mysql' 카테고리의 다른 글

foreach insert update  (0) 2023.01.09
INSERT UPDATE  (0) 2022.12.27
테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27
문자열필드를 숫자로 형변환  (0) 2022.12.27
INSERT INTO SELECT 테이블 복사  (0) 2022.12.27

select * from table1 a left join table2 b on convert(a.userid USING latin1)= b.userid

'DataBase > Mysql' 카테고리의 다른 글

INSERT UPDATE  (0) 2022.12.27
mysql 문자열 관련 함수  (0) 2022.12.27
문자열필드를 숫자로 형변환  (0) 2022.12.27
INSERT INTO SELECT 테이블 복사  (0) 2022.12.27
날짜함수  (0) 2022.12.27

select cast(column1 as SIGNED) from table

'DataBase > Mysql' 카테고리의 다른 글

mysql 문자열 관련 함수  (0) 2022.12.27
테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27
INSERT INTO SELECT 테이블 복사  (0) 2022.12.27
날짜함수  (0) 2022.12.27
TRUNCATE / OPTIMIZE TABLE 명령어  (0) 2022.12.27

insert into 테이블1 (select * from 테이블2); //레코드복사

create table 새테이블명 select * from 테이블명; //테이블복사

mysql 4 버젼이상에서 사용가능

'DataBase > Mysql' 카테고리의 다른 글

테이블 조인시 타입이 맞지 않을때  (0) 2022.12.27
문자열필드를 숫자로 형변환  (0) 2022.12.27
날짜함수  (0) 2022.12.27
TRUNCATE / OPTIMIZE TABLE 명령어  (0) 2022.12.27
MySQL 내장 함수 정리  (0) 2022.12.26

+ Recent posts