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 ---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(33NOT NULL COMMENT '관리건축물대장PK',
  regstrGbCd varchar(1DEFAULT NULL COMMENT '대장구분코드',
  regstrGbCdNm varchar(100DEFAULT NULL COMMENT '대장구분코드명',
  regstrKindCd varchar(1DEFAULT NULL COMMENT '대장종류코드',
  regstrKindCdNm varchar(100DEFAULT NULL COMMENT '대장종류코드명',
  jiAddress varchar(230NOT NULL COMMENT '대지위치',
  stAddress varchar(230DEFAULT NULL COMMENT '도로명대지위치',
  bldNm varchar(100DEFAULT NULL COMMENT '건물명',
  sigunguCd varchar(5NOT NULL COMMENT '시군구코드',
  bjdongCd varchar(5NOT NULL COMMENT '법정동코드',
  platGbCd char(1NOT NULL DEFAULT '0' COMMENT '대지구분코드',
  bun varchar(4NOT NULL COMMENT '번',
  ji varchar(4NOT NULL COMMENT '지',
  splotNm varchar(200DEFAULT NULL COMMENT '특수지명',
  block varchar(20DEFAULT NULL COMMENT '블록',
  lot varchar(20DEFAULT NULL COMMENT '로트',
  bylotCnt int(11DEFAULT 0 COMMENT '외필지수',
  naRoadCd varchar(12DEFAULT NULL COMMENT '새주소도로코드',
  naBjdongCd varchar(5DEFAULT NULL COMMENT '새주소법정동코드',
  naUgrndCd char(1DEFAULT '0' COMMENT '새주소지상지하코드',
  naMainBun int(11DEFAULT NULL COMMENT '새주소본번',
  naSubBun int(11DEFAULT NULL COMMENT '새주소부번',
  dongNm varchar(100DEFAULT NULL COMMENT '동명칭',
  mainAtchGbCd char(1DEFAULT '0' COMMENT '주부속구분코드',
  mainAtchGbCdNm varchar(100DEFAULT 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(1DEFAULT NULL COMMENT '구조코드',
  strctCdNm varchar(100DEFAULT NULL COMMENT '구조코드명',
  etcStrct varchar(500DEFAULT NULL COMMENT '기타구조',
  mCode int(11DEFAULT NULL COMMENT '주용도코드',
  mCodeNM varchar(100DEFAULT NULL COMMENT '주용도코드명',
  etcType text DEFAULT NULL COMMENT '기타용도',
  roofCd varchar(2DEFAULT NULL COMMENT '지붕코드',
  roofCdNm varchar(100DEFAULT NULL COMMENT '지붕코드명',
  etcRoof varchar(500DEFAULT NULL COMMENT '기타지붕',
  hhldCnt int(11DEFAULT 0 COMMENT '세대수(세대)',
  fmlyCnt int(11DEFAULT 0 COMMENT '가구수(가구)',
  heit double NOT NULL DEFAULT 0 COMMENT '높이(m)',
  gFlrCnt int(5DEFAULT 0 COMMENT '지상층수',
  ugFlrCnt int(2DEFAULT 0 COMMENT '지하층수',
  rideUseElvtCnt int(11DEFAULT 0 COMMENT '승용승강기수',
  emgenUseElvtCnt int(11DEFAULT 0 COMMENT '비상용승강기수',
  atchBldCnt int(11DEFAULT 0 COMMENT '부속건축물수',
  atchBldArea double NOT NULL DEFAULT 0 COMMENT '부속건축물면적(㎡)',
  totDongTotArea double NOT NULL DEFAULT 0 COMMENT '총동연면적(㎡)',
  indrMechUtcnt int(11DEFAULT 0 COMMENT '옥내기계식대수(대)',
  indrMechArea double NOT NULL DEFAULT 0 COMMENT '옥내기계식면적(㎡)',
  oudrMechUtcnt int(11DEFAULT 0 COMMENT '옥외기계식대수(대)',
  oudrMechArea double NOT NULL DEFAULT 0 COMMENT '옥외기계식면적(㎡)',
  indrAutoUtcnt int(11DEFAULT 0 COMMENT '옥내자주식대수(대)',
  indrAutoArea double NOT NULL DEFAULT 0 COMMENT '옥내자주식면적(㎡)',
  oudrAutoUtcnt int(11DEFAULT 0 COMMENT '옥외자주식대수(대)',
  oudrAutoArea double NOT NULL DEFAULT 0 COMMENT '옥외자주식면적(㎡)',
  pmsDay varchar(8DEFAULT NULL COMMENT '허가일',
  stcnsDay varchar(8DEFAULT NULL COMMENT '착공일',
  useAprDay varchar(8DEFAULT NULL COMMENT '사용승인일',
  pmsnoYear varchar(4DEFAULT NULL COMMENT '허가번호년',
  pmsnoKikCd char(7DEFAULT NULL COMMENT '허가번호기관코드',
  pmsnoKikCdNm varchar(100DEFAULT NULL COMMENT '허가번호기관코드명',
  pmsnoGbCd varchar(4DEFAULT NULL COMMENT '허가번호구분코드',
  pmsnoGbCdNm varchar(100DEFAULT NULL COMMENT '허가번호구분코드명',
  hoCnt int(11DEFAULT 0 COMMENT '호수(호)',
  engrGrade varchar(4DEFAULT NULL COMMENT '에너지효율등급',
  engrRat double DEFAULT 0 COMMENT '에너지절감율',
  engrEpi int(11DEFAULT 0 COMMENT 'EPI점수',
  gnBldGrade char(1DEFAULT NULL COMMENT '친환경건축물등급',
  gnBldCert int(11DEFAULT 0 COMMENT '친환경건축물인증점수',
  itgBldGrade char(1DEFAULT NULL COMMENT '지능형건축물등급',
  itgBldCert int(11DEFAULT 0 COMMENT '지능형건축물인증점수',
  regDate varchar(8NOT NULL COMMENT '생성일자',
  rsDsgnApplyYn char(1DEFAULT '0' COMMENT '내진설계적용여부',
  rsAblty varchar(20DEFAULT 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, ' '1NOT 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