///////
Search
🎭

병원 데이터 실습

전승환_1012

실습 개요

대량의 데이터를 이용해 테이블을 생성하는 쿼리를 담은 SQL 스크립트 파일을 만들 수 있어야 본격적으로 DB를 다룰 수 있게 된다. 이 실습에서는 서울시에 있는 병원에 대한 데이터를 담은 CSV 파일을 이용해 SQL 스크립트 파일을 만들어볼 것이다. 실습을 하는 순서는 아래와 같다.
파일 읽기: 먼저 DB로 변환할 CSV 파일을 읽을 수 있어야 가공을 한 후 테이블에 insert into 쿼리를 실행하는 것이 가능해진다.
가공하기: 파일을 읽는 과정과 동시에 이루어지긴 하지만, 1번과는 다른 구현과정을 필요로 하기 때문에 따로 작성했다. 읽어낸 데이터들에서 필요한 정보만 추출해내는 단계이다.
SQL 스크립트 작성하기: 이제 새로운 파일을 만든다. 확장명은 .sql로 하고, 이 때 insert intovalues 키워드를 적절히 사용하면서 문자열로 된 각 줄을 생성해야 한다.

파일 읽기 & 가공하기

먼저 병원 데이터를 담은 CSV 파일을 읽어서 필요한 데이터를 추출하여 이 데이터들을 사용해 SQL 스크립트 파일을 만들 준비를 할 것이다.
우선 객체 지향적으로 설계하기 위해 파일을 읽어내는 클래스를 따로 생성한다. 클래스의 이름은 ReadLineContext로 하겠다.
코드 보기
코드 설명
그리고 ReadLineContext에 사용되는 ParseAccordingly 인터페이스와 구현체는 다음과 같다.
코드 보기
코드 설명
Parse에서 반환하는 Hospital 클래스 객체는 매개변수로 5개의 문자열을 받았다. 그 이유는 아래 코드를 살펴보면 알 수 있다.
코드 보기
코드 설명

SQL 스크립트 파일 생성하기

자, 지금까지의 과정을 거치고 나면 파일을 읽어서 DB 테이블에 넣기 위한 병원에 대한 정보를 순서에 맞게 담은 사이즈 약 19000의 List를 얻을 수 있다. 이 List를 얻고, 그 리스트를 이용하여 .sql 파일을 생성하는 코드를 CreateHospitalCsv 클래스에서 구현해보자.
코드 보기
코드 설명
또 주소들 중 중간에 작은 따움표를 포함한 항목이 있음을 발견했다. 이로 인해 쿼리가 완성되기 전에 쿼리문이 닫혀버리는 문제가 있었는데, 이를 해결하기 위해 과감하게 작은 따움표를 삭제하는 방식을 택했다. Hospital 클래스를 보면 clean 메서드가 이 일을 하고 있다. + 어차피 I’PARK 와 같이 사소한 이름에서 나오는 따움표라 지워도 DB의 정확도에는 지장이 없었기 때문에 지우는 것을 선택했다!
이 과정을 모두 잘 따라왔다면, 다음과 같이 testScript.sql 이 생성된 것을 볼 수 있다!
열면 이런 모양의 파일이 생성된 것을 알 수 있다.

생성된 스크립트를 MySQL WorkBench에서 사용하기

이제 만들어진 스크립트로 DB 테이블에 직접 데이터를 넣어보자. 드디어 CSV 파일이 DB로 바뀌는 단계이다.
1.
우선 File → Open SQL Script를 선택한다.
2.
다음 화면이 나오면 생성된 스크립트 파일을 누른다.
3.
번개 모양을 클릭하여 스크립트를 테이블에 적용시킨다.
4.
성공했다는 체크표시와 함께 총 19037개의 row가 영향을 받았음을 보여준다.
5.
이제 데이터들이 추가된 테이블을 감상하면 된다.
서울에도 많은 병원이 있지만, 규모를 더 크게 전국으로 늘려서 파일을 DB테이블로 옮기는 연습을 해보는 것도 도움이 될 것 같다.