일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- JavaScript
- git
- CRUD
- Oracle DB
- SQL
- ||
- 이클립스
- 답변형 게시판
- sql developer
- HTML
- alias
- Bootstrap
- distinct
- 과정평가형
- github
- rownum
- oracle
- 부트스트랩
- 한글 인코딩
- 모조칼럼
- group by
- Java
- jQuery
- 제약조건
- HTTP Status 500
- 성적프로그램
- HTTP Status 404
- JSP
- tomcat
- Oracle SQL
초급의 끄적거림
[SQL] CSV 변환 (외부 데이터를 이용하여 테이블 생성) 본문
[CSV변환]
⊙ 외부에서 발생하는 데이터를 데이터베이스에 저장할 것
⊙ 공공데이터는 국가에서 제공하는 경우가 많음 (공공데이터 https://www.data.go.kr)
[툴을 이용하여 생성]
⊙ zipcode를 create 하지말고 '데이터 임포트' 수행
⊙ '접속' → '테이블' 오른쪽 마우스 클릭
→ '데이터 임포트'
⊙ 우편번호 post.csv를 등록
⊙ 열 정의
- 열에 맞는 칼럼명, 데이터 유형, 제약조건을 설정함
- 널 가능? : 체크 시, null / 체크 해제시, not null
zipcode 테이블에 데이터가 잘 들어갔는지 확인하려는 의도 |
select count(*) from zipcode; |
문1) 시도별 우편번호의 개수를 구하고 이를 기준으로 내림차순 조회하시오 |
select sido, count(sido) from zipcode group by sido order by count(sido); |
+) 우편번호의 개수가 3000개 이상인 시도를 구하시오 |
select sido, count(sido)
from zipcode group by sido having count(sido)>=3000 order by count(sido);
|
문2) 서울지역의 구의 우편번호 개수를 구하시오 |
select gugun, count(gugun) from zipcode where gugun="서울특별시" group by gugun; |
[명령어를 사용하여 테이블 생성]
⊙ 우편번호 테이블 삭제
drop table zipcode;
⊙ 우편번호 테이블 생성
create table zipcode(
zipcode char(7) not null --우편번호 (A열), 일정한 숫자의 나열이라서 문자열(char / varchar)로 해도 됨
,sido varchar(30) not null --시, 도 (B열)
,gugun varchar(50) --구, 군 (C열)
,dong varchar(50) --동 (D열)
,li varchar(50) --리 (E열)
,bunji varchar(255) --번지 (F열)
,etc varchar(255) --기타 (G열)
);
⊙ zipcode.ctl 파일 생성 (ctrl의 약자를 따서 ctl)
→ 아래의 내용을 txt에 적어서 파일명을 '~~.ctl' 로 생성 후 cmd (명령 프롬프트)에 가서 실행
→ 명령어 두 번째 줄에 들어간 테이블을 미리 create 시켜줘야함
→ 이 방법은 명령툴을 사용하지 않는 경우에 사용
load data infile 'post.csv' --원본 파일은 'post.csv'
insert into table zipcode -- 내용이 들어갈 테이블 (zipcode)을 지정
fields terminated by ',' --구분을 , 를 사용할 것
trailing nullcols --null값 허용
(zipcode,sido,gugun,dong,li,bunji,etc)
⊙ cmd에서 dir을 이용해 zicode.ctl 이 있는지 확인 (+ post.csv도 있는지 확인)
⊙ 컨트롤 파일 실행시 쓰는 명령어 : sqlldr
>sqlldr 계정/비번 control="~~.ctl"
← 자료가 다 입력되어 들어가는 모습
자료의 내용에 따라 길어지기도하고 짧아지기도 함
[도로명 DB.txt를 CSV로]
⊙ 도로명주소DB - 도로명주소 개발자 센터 : https://www.juso.go.kr/addrlink/main.do
- 도로명주소 DB 다운로드부터 활용방법도 설명되어 있음
1) 엑셀에서 도로명 DB를 불러옴
2) 원본 파일을 한국어로 볼 수 있게 설정
- 한국어 (완성), 환국어 (조합) 등 여러가지가 존재하기 때문에 본인에게 맞춰서 사용
3) 자료의 구분 기호에 맞춰 잘라 넣을 수 있게 만들어야 함
- 이 파일의 경우, 데이터의 구분 기호가 ' | ' 였기 때문에 '기타' → ' | ' 선택
- 맞는 구분 기호 선택시 '데이터 미리보기' 에서 자료가 분리된 것을 확인 할 수 있음
- '기타' 의 경우, 오타가 날 수 있기 때문에 복사붙여넣기 추천
4) 열 서식을 설정해줘야함
- 맞는 열 서식을 설정해주지 않을 경우, 다르게 표현 될 수 있음
- 도로명코드는 '텍스트'를 넣어줘야 바르게 표현됨
'DB > Oracle' 카테고리의 다른 글
[SQL] PL/SQL 프로시저 (형식/조건문/반복문), %rowtype, %type (0) | 2019.08.05 |
---|---|
[SQL] Oracle XE 11g 설치, cmd에서 사용자 계정 생성/권한부여 (0) | 2019.08.01 |
[SQL] 트랜잭션 (Transaction) (0) | 2019.07.30 |
[SQL] rownum (0) | 2019.07.29 |
[SQL] join의 종류 (inner join / left join / right join) (0) | 2019.07.29 |