계발하는 개발자

[MySQL] MySQL 워크벤치로 json 파일 import 하기 본문

📚 Database/MySQL

[MySQL] MySQL 워크벤치로 json 파일 import 하기

dev_genie 2023. 8. 28. 16:29

MySQL에 생성한 DB 테이블로 데이터를 보내기 위해 워크벤치 프로그램을 다운로드해줘야 한다.

https://www.mysql.com/products/workbench/

 

워크벤치를 본격적으로 실행 전에, XAMPP 컨트롤 패널에서 MySQL 서버를 실행해준다.

그렇지 않으면 워크벤치에서 내 로컬 MySQL 서버에 대한 연결을 수행할 수가 없다.

 

워크벤치가 설치됐나?

이제 워크벤치를 사용해서 가지고 있는 json 데이터를 MySQL DB로 import 시키면 된다.

 

1. MySQL Workbench에서 새로운 연결을 생성

초기 진입화면에서 보이는 + 버튼을 눌러준다.

 

2. 원하는 Connection Name 입력

※ Connection Name 외 나머지 정보들은 default 설정이기 때문에 따로 건드릴 필요없다.

이름을 정해준 후에 Test Connection을 눌러준다.

아래같은 메시지가 뜬다면 성공이다.

아래 생성된 커넥션을 더블클릭해서 들어간다.

 

3. Table Data Import Wizard 실행

Schemas 탭 > 생성한 DB명(shoopen_db) 우클릭 > Table Data Import Wizard 클릭

 

4. 데이터가 저장된 json 파일 선택

참고로 csv파일을 사용할 경우 추가적인 형식 변환 작업을 거쳐줘야 해서 번거로울 수 있다. 때문에 나는 json 파일을 선택!

5. 데이터를 저장할 테이블명 지명

나의 경우 전국 슈펜 매장의 점포 데이터를 저장해줘야 했으므로 stores 라고 지정해줬다.

이름을 지정했으면 다음을 클릭

 

6. import할 데이터 컬럼 정보 매칭하기

테이블 칼럼에 어떤 JSON 칼럼 데이터를 삽입해 줄 지 설정해준다.

 

 

계속해서 Next 버튼 눌러주면 Import Results 창에 최종적으로 몇 개 데이터가 import됐다고 뜬다.

 

7. 생성한 테이블에 저장된 모든 데이터 조회

SELECT * FROM DB명.테이블명 명령어 입력후 상단 번개아이콘 클릭해서 실행하면 아래 주르륵 저장된 데이터를 알려준다.

이때 stores 테이블을 막 생성한 경우, 좌측 스키마에 표시 안되는 경우가 있는데 아직 데이터 갱신이 안되서 그렇다.

스키마 패널에 마우스 우클릭 > Refresh All 누르거나 워크벤치를 껐다 켜면 나타날거다.

 

8. MySQL어드민 접속후 DB에 import된 테이블 데이터 확인

json 파일이 잘 import 됐다면 아래처럼 MySQL DB에 자동 반영된 것을 볼 수 있다.

 

----------- 여기서부터는 오류 해결팁 !!! -----------------

1. Unhandled exception: 'cp949' codec can't decode 에러

기존에는 많이들 사용한다는 csv형식의 파일을 import 시키려고 했을 때

아래와 같은 에러가 자꾸 떴다. 

한글의 경우 csv 파일이 cp949인 경우가 많은데 MySQL에선 지원을 안해줘서 그렇다더라..

따라서 파일형식 cp949를 utf-8로 바꿔줘야 한다.

메모장을 이용해서 utf-8로 바꿔라, MySQL 설정을 바꿔라 등등.. 정보가 많지만

난 그렇게 해도 안되서 그냥 csv 파일을 json으로 바꿔서하니 바로 해결됐다.

 

아래 사이트에서 csv파일을 json 형식으로 변환시킬 수 있다.

 

CSVJSON - CSVJSON

JSON JSON stands for JavaScript Object Notation and has become the defacto computer format readable by humans to store structured data. From APIs to configuration files, JSON is now everywhere.

csvjson.com

 

2. 0 records imported 에러

다음으로 많이 발생한 에러였는데, 분명 record가 존재함에도 자꾸 아래같은 결과가 떴다.

0 records imported

 

알아보니 import시킬 db의 컬럼 형식이 맞지 않아서 발생한 에러였다.

혹시 일부 컬럼 항목이 실패하여 기존에 반영 가능한 데이터까지 전부 안되는거 아닐까 추측했는데,

아니나 다를까 일부 컬럼만 넣은 경우에는 정상적으로 반영이 되었다!

단, workbench에서는 문제의 항목이 뭐인지는 알려주지 않기 때문에 일일히 문제가 되는 형식의 컬럼 항목을 체크해보고 반영시키고, 지우는 과정을 반복하며 어느 항목에서 문제가 일어나는지를 찾을 수 있었다.

문제가 되는 곳은 double 형태의 위도, 경도 데이터였다.

double 경우는 위도, 경도를 반영하는 값이기 때문에 소수점을 누락시키거나, integer로 바꾸기도 어려운 상황이었는데,

해결방법은 소수점 전체를 문자열 형태로 변환하니 정상적으로 반영되었다.

해당 컬럼의 문제를 해결하니 다른 컬럼의 데이터도 정상 반영되는 것을 확인할 수 있었다.

----------- 여기까지  -----------------

느낀점

MySQL workbench 를 사용해서 MySQL DB에 데이터를 자동 반영시키는 방법을 알게되어 유익했고,

이를 통해 데이터베이스 활용의 맛을 조금이나마 맛볼 수 있었다..!

찾다보니 workbench를 활용해 데이터베이스 ERD 모델링을 구축하는 등 생각보다 많은 일을 수행할 수 있는 것을 알게 되었다. 이를 계기로 조금씩 관심의 폭을 넓혀 workbench의 다양한 활용과 쓰임에 대해 공부하고 싶어졌다.

LIST
profile

dev_genie

@dev_genie

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!