본문 바로가기
DBMS/oracle

외부 파일 데이터베이스에 넣기

by 코디드 2023. 3. 7.

회원 가입을 하거나 인터넷 쇼핑몰에서 주문을 하면 주소를 적어야 할때가 있는데

대부분의 사이트에서 도로명 주소만 입력하면 나머지 주소를 쉽게 선택하게끔 도와준다.

이때 사용하는 주소 데이터는 당연히 일일이 만드는게 아니고 나라에서 제공하는 데이터를 받아서 만드는데

이런 외부 파일을 데이터 베이스에 넣는 방법에 대해 알아보자.

 

 

 

 

 

1. 우정 사업 본부에서 파일 다운로드

 

https://www.koreapost.go.kr/

 

우정사업본부

 

www.koreapost.go.kr

 

사진에 나온대로 순서대로 따라하면 zipcode_DB.zip을 다운받을 수 있다.

 

 

 

 

 

2. 엑셀 파일로 필요한 정보 정리

 

zip 파일 압축을 풀면 txt 파일로 저장되는데 편의상 그중에서 가장 용량이 작은 세종시 파일을 DB에 넣기로 하자.

(제일 작은 건데도 20,000줄이 넘는다)

해당 파일을 엑셀로 들어가서 열기를 하면

 

 

 

이런 창이 뜬다

(대체 왜 울산 파일로 예시를 드는 스샷을 찍었을까ㅋㅋ)

그러면 '구분 기호로 분리됨'을 선택하고 '다음'을 눌러준다

 

 

 

빨간색 박스 부분을 보면 데이터가 ' | ' (shift+엔터위에 원화 표시)로 구분 되어 있고

1행과 2행의 칸의 크기가 다른걸 알 수 있다.

 

 

 

구분기호에서 '기타'를 눌러주고 데이터를 구분하는데 쓰인 ' | ' 를 입력해주면

이전 사진과 다르게 칸이 균일하게 구분되는 것이 보인다.

다음을 눌러주면 마지막 단계가 나오는데 그때는 원래 설정된 값 그대로 마침을 눌러준다.

 

 

 

 

 

3. 데이터 맨 앞, 맨뒤 열에 문자열 삽입

 

 

이제 텍스트 파일이 엑셀로 완벽하게 정리되어 나온다.

필요없다고 생각하는 데이터는 스스로의 판단하에 지워준다.

 

그리고, 위 사진처럼 1행에 있던 분류 기준을 전부 지우고

맨 앞열과 맨 뒷열에 사진처럼 아무런 단어나 적어준다.

단,  A열의 적힌 단어는 전부 서로 같아야 하며, 이는 B열도 마찬가지다.

그리고, 양쪽 열의 단어는 그 어떤 내부 데이터와도 일치하지 않아야 한다.

그냥 영타로 아무렇게 작성해주면 될 것 같다.

 

엑셀 파일 이름은 '원하는파일명.csv' 로 저장해준다

 

 

 

 

 

4. editplus/ 메모장으로 맨 앞 열과 맨 뒷 열의 내용 바꾸기

 

대체 3번 같은 짓을 왜 한 걸까?

그 이유는 이 데이터를 한꺼번에 DB에 넣기 위해서인데

저렇게 맨 앞열과 맨 뒷열에 아무 글자나 넣고 그걸 editplus/ 메모장에서 sql 문에 필요한 글자로 바꿔주기 위해서다.

 

 

방금 저장한 엑셀 파일을 메모장을 이용해서 열면 이렇게 저장한대로 뜨는데 

 

 

 

편집>바꾸기로 들어가준다.

 

 

 

아무렇게 입력했던 맨 앞 열을 쿼리문으로 바꿔준다.

데이터를 넣는거니끼 insert 문을 써주면 되겠죠?

끝에 있는 | 는 커서가 찍힌거니까 무시하고

그 앞에  '  (작은따옴표) 빼먹지 말자.

 

 

 

사이에 있는 , (반점)들은

',' (작은따옴표, 쉼표, 작은따옴표) 로 바꿔주고

 

 

마지막에 행은 쿼리문을 닫는 ); 를 입력해주자

끝에   |  는 커서가 스크린샷에 찍힌거니까 무시!

 

 

 

 

 

 

자 그러면 이렇게 무려 20,000줄이나 되는 전체 데이터가 완벽한 쿼리문의 형태로 바뀐다.

이 텍스트 파일을 "원하는파일명.sql"로 저장해준다.

반드시 끝에 .sql 을 써줘야 한다는 것을 잊지말자.

 

 

 

 

 

5. cmd 로 DB에 데이터 넣기

 

 

나 같은 경우 DBMS로 ORACLE을 써서 sqlplus를 써줬고

그 후, 아이디, 비번을 써주고 'SQL>' 이 뜨면

주황색 박스의 '@C:/각자/저장한/파일경로/파일명.sql' 을 입력하고 엔터를 누른다.

 

그러면 20,000줄의 데이터가 DB에 insert 된다.

 

중간에 멈추면서 잘못 입력한 데이터가 뜨는걸 알려주는데 이럴때는 그냥 엔터를 눌러준다.

(중요 프로젝트에서는 이러면 안된다)

 

 

 

*근데 마지막에 cmd에서 insert를 할때 나 같은 경우 윈도우라서 20,000줄을 전부 넣는데 1분 가까이 걸렸는데

맥으로 하면 3초 정도 밖에 안걸린다고 한다...