SQL
건축물대장 표제부 대용량 일괄 업로드 방법
Link2Me
2024. 9. 13. 14:09
728x90
건축데이터 민간개방 시스템 https://open.eais.go.kr/main/main.do 사이트에서 자료를 받는 방법이다.
건축물대장 표제부 데이터 크기가 너무 커서 EditPlus 와 같은 툴로 편집할 수가 없다. 그래서 리눅스에 파일을 올리고 파일 분할을 한 다음에 다시 EditPlus로 열어 인코딩 모드를 ANSI 에서 UTF8로 변경 저장해야 한다. 안그러면 한글이 깨져 업로드된다.
설명의 엑셀 파일을 다운로드 해서 순서대로 테이블을 설계한 것이 아래 코드이다.
건축물대장 표제부 데이터를 일괄 업로드하는 방법이다.
테이블 설계하는 것은 아래 제시한 것으로 이용하면 된다.
수도권 데이터만 필요해서 업로드 후 나머지 데이터는 삭제 처리했다.
준공일자가 잘못 나온 것도 모두 삭제처리했다.
######################################################################################
건축물대장 표제부
######################################################################################
cd /home/httpd/htdocs/sample/uploads
split -n l/3 -d --additional-suffix=.txt mart_djy_03.txt djypart_
# editplus 에디터 툴로 열어서 ANSI 를 UTF8 로 변경하여 저장한다.
mysql -uroot -p
SHOW VARIABLES LIKE 'character_set%';
use testdb;
CREATE TABLE djy_blding_tsect (
pkCode varchar(33) NOT NULL COMMENT '관리건축물대장PK',
regstrGbCd varchar(1) DEFAULT NULL COMMENT '대장구분코드',
regstrGbCdNm varchar(100) DEFAULT NULL COMMENT '대장구분코드명',
regstrKindCd varchar(1) DEFAULT NULL COMMENT '대장종류코드',
regstrKindCdNm varchar(100) DEFAULT NULL COMMENT '대장종류코드명',
jiAddress varchar(230) NOT NULL COMMENT '대지위치',
stAddress varchar(230) DEFAULT NULL COMMENT '도로명대지위치',
bldNm varchar(100) DEFAULT NULL COMMENT '건물명',
sigunguCd varchar(5) NOT NULL COMMENT '시군구코드',
bjdongCd varchar(5) NOT NULL COMMENT '법정동코드',
platGbCd char(1) NOT NULL DEFAULT '0' COMMENT '대지구분코드',
bun varchar(4) NOT NULL COMMENT '번',
ji varchar(4) NOT NULL COMMENT '지',
splotNm varchar(200) DEFAULT NULL COMMENT '특수지명',
block varchar(20) DEFAULT NULL COMMENT '블록',
lot varchar(20) DEFAULT NULL COMMENT '로트',
bylotCnt int(11) DEFAULT 0 COMMENT '외필지수',
naRoadCd varchar(12) DEFAULT NULL COMMENT '새주소도로코드',
naBjdongCd varchar(5) DEFAULT NULL COMMENT '새주소법정동코드',
naUgrndCd char(1) DEFAULT '0' COMMENT '새주소지상지하코드',
naMainBun int(11) DEFAULT NULL COMMENT '새주소본번',
naSubBun int(11) DEFAULT NULL COMMENT '새주소부번',
dongNm varchar(100) DEFAULT NULL COMMENT '동명칭',
mainAtchGbCd char(1) DEFAULT '0' COMMENT '주부속구분코드',
mainAtchGbCdNm varchar(100) DEFAULT NULL COMMENT '주부속구분코드명',
platArea double NOT NULL DEFAULT 0 COMMENT '대지면적(㎡)',
archArea double NOT NULL DEFAULT 0 COMMENT '건축면적(㎡)',
bcRat double NOT NULL DEFAULT 0 COMMENT '건폐율(%)',
totArea double NOT NULL DEFAULT 0 COMMENT '연면적(㎡)',
vlRatEstmTotArea double NOT NULL DEFAULT 0 COMMENT '용적률산정연면적(㎡)',
vlRat double NOT NULL DEFAULT 0 COMMENT '용적률(%)',
strctCd char(1) DEFAULT NULL COMMENT '구조코드',
strctCdNm varchar(100) DEFAULT NULL COMMENT '구조코드명',
etcStrct varchar(500) DEFAULT NULL COMMENT '기타구조',
mCode int(11) DEFAULT NULL COMMENT '주용도코드',
mCodeNM varchar(100) DEFAULT NULL COMMENT '주용도코드명',
etcType text DEFAULT NULL COMMENT '기타용도',
roofCd varchar(2) DEFAULT NULL COMMENT '지붕코드',
roofCdNm varchar(100) DEFAULT NULL COMMENT '지붕코드명',
etcRoof varchar(500) DEFAULT NULL COMMENT '기타지붕',
hhldCnt int(11) DEFAULT 0 COMMENT '세대수(세대)',
fmlyCnt int(11) DEFAULT 0 COMMENT '가구수(가구)',
heit double NOT NULL DEFAULT 0 COMMENT '높이(m)',
gFlrCnt int(5) DEFAULT 0 COMMENT '지상층수',
ugFlrCnt int(2) DEFAULT 0 COMMENT '지하층수',
rideUseElvtCnt int(11) DEFAULT 0 COMMENT '승용승강기수',
emgenUseElvtCnt int(11) DEFAULT 0 COMMENT '비상용승강기수',
atchBldCnt int(11) DEFAULT 0 COMMENT '부속건축물수',
atchBldArea double NOT NULL DEFAULT 0 COMMENT '부속건축물면적(㎡)',
totDongTotArea double NOT NULL DEFAULT 0 COMMENT '총동연면적(㎡)',
indrMechUtcnt int(11) DEFAULT 0 COMMENT '옥내기계식대수(대)',
indrMechArea double NOT NULL DEFAULT 0 COMMENT '옥내기계식면적(㎡)',
oudrMechUtcnt int(11) DEFAULT 0 COMMENT '옥외기계식대수(대)',
oudrMechArea double NOT NULL DEFAULT 0 COMMENT '옥외기계식면적(㎡)',
indrAutoUtcnt int(11) DEFAULT 0 COMMENT '옥내자주식대수(대)',
indrAutoArea double NOT NULL DEFAULT 0 COMMENT '옥내자주식면적(㎡)',
oudrAutoUtcnt int(11) DEFAULT 0 COMMENT '옥외자주식대수(대)',
oudrAutoArea double NOT NULL DEFAULT 0 COMMENT '옥외자주식면적(㎡)',
pmsDay varchar(8) DEFAULT NULL COMMENT '허가일',
stcnsDay varchar(8) DEFAULT NULL COMMENT '착공일',
useAprDay varchar(8) DEFAULT NULL COMMENT '사용승인일',
pmsnoYear varchar(4) DEFAULT NULL COMMENT '허가번호년',
pmsnoKikCd char(7) DEFAULT NULL COMMENT '허가번호기관코드',
pmsnoKikCdNm varchar(100) DEFAULT NULL COMMENT '허가번호기관코드명',
pmsnoGbCd varchar(4) DEFAULT NULL COMMENT '허가번호구분코드',
pmsnoGbCdNm varchar(100) DEFAULT NULL COMMENT '허가번호구분코드명',
hoCnt int(11) DEFAULT 0 COMMENT '호수(호)',
engrGrade varchar(4) DEFAULT NULL COMMENT '에너지효율등급',
engrRat double DEFAULT 0 COMMENT '에너지절감율',
engrEpi int(11) DEFAULT 0 COMMENT 'EPI점수',
gnBldGrade char(1) DEFAULT NULL COMMENT '친환경건축물등급',
gnBldCert int(11) DEFAULT 0 COMMENT '친환경건축물인증점수',
itgBldGrade char(1) DEFAULT NULL COMMENT '지능형건축물등급',
itgBldCert int(11) DEFAULT 0 COMMENT '지능형건축물인증점수',
regDate varchar(8) NOT NULL COMMENT '생성일자',
rsDsgnApplyYn char(1) DEFAULT '0' COMMENT '내진설계적용여부',
rsAblty varchar(20) DEFAULT NULL COMMENT '내진능력'
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci COMMENT='건축물대장 표제부';
ALTER TABLE djy_blding_tsect
ADD PRIMARY KEY (pkCode),
ADD KEY jiAddress (jiAddress),
ADD KEY jCode (sigunguCd,bjdongCd,platGbCd,bun,ji);
COMMIT;
LOAD DATA LOCAL INFILE '/home/httpd/htdocs/sample/uploads/djypart_00.txt'
INTO TABLE djy_blding_tsect
FIELDS TERMINATED BY '|'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
LOAD DATA LOCAL INFILE '/home/httpd/htdocs/sample/uploads/djypart_01.txt'
INTO TABLE djy_blding_tsect
FIELDS TERMINATED BY '|'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
LOAD DATA LOCAL INFILE '/home/httpd/htdocs/sample/uploads/djypart_02.txt'
INTO TABLE djy_blding_tsect
FIELDS TERMINATED BY '|'
ENCLOSED BY '"'
LINES TERMINATED BY '\n';
DELETE FROM djy_blding_tsect WHERE SUBSTRING_INDEX(jiAddress, ' ', 1) NOT IN ('서울특별시', '경기도', '인천광역시');
# 준공일자가 8자리가 아닌 것은 모두 삭제
DELETE FROM djy_blding_tsect WHERE length(useAprDay) != 8;
select pkCode, max(useAprDay) from djy_blding_tsect;
# 준공일자가 현재 날짜보다 큰 숫자 즉 잘못 기입된 것은 삭제처리
DELETE FROM djy_blding_tsect WHERE useAprDay > '20240901';
OPTIMIZE TABLE djy_blding_tsect;
|
cs |
728x90