본문 바로가기
부트캠프 개발일기/Main-Project

109일차: Main-Project Day 16 (CSV파일 Import, 0 records imported, 데이터 넣기)

by shyun00 2023. 7. 19.

이제 정말정말 코드 구현이 마무리되어가고있다.

 

배포 환경도 어느정도 안정화가 돼서 실제로 데이터가 필요한 시점이 왔다.

지금까지는 가게 1개, 제품 10개만 등록되어있는 아주 작은 사이트였다.

실제 서비스처럼 여러가지 선택지도 주고, 데모데이때 실감나는 사용자 경험을 제공하기 위해서는 많은 데이터가 들어있어야한다.

 

실제 서비스라면 사업자 회원이 직접 가게정보, 제품 정보를 등록하겠지만 현재 사업자쪽 기능은 구현되어있지 않아 직접 넣어주어야한다.

오늘 아침 주문조회쪽 테스트를 위해 데이터를 수동으로 입력했는데 Orders테이블, Orders_Product 테이블에도 같이 내용을 넣어야하다보니 해당 과정도 생각보다 손이 많이갔다.

 

팀원들이랑 대략적으로 얘기를 한게 가게 정보 약 55개, 가게별로 약 12개씩의 제품 정보를 넣기로 했다.

 

서버DB에 직접 접근해서 데이터를 바로 넣을수도 있겠지만, 혹시 모를 에러 방지를 위해 로컬에서 작업한 후 .csv파일을 넘겨주는 방식으로 진행하기로 했다.

 

1. 첫번째 오류 (인코딩 관련 문제)

MySQLWorkbench를 통해 현재 서버에 등록되어 있는 DB를 받아와서 로컬 DB에 셋팅하려고 했는데 다음 에러가 발생했다.

찾아보니 한글 문자가 있으면 인코딩 관련 문제가 생길수도 있다고 한다.

텍스트 에디터를 사용해 UTF-8로 다시 인코딩해서 사용할 수도 있다고 한다.

 

가장 간단하게 작업할 수 있는 방법을 찾아보니 MySQL에서 csv, json 타입의 파일만 인식하기때문에 csv 파일을 json 형태로 변환해서 사용하면 된다고 한다.

 

아래 사이트에서 csv 파일을 json 파일로 변경했고, 정상적으로 데이터가 들어가는것을 확인할 수 있었다.

http://www.convertcsv.com/csv-to-json.htm

 

2. 두번째 문제(0 records imported)

그런데, 데이터를 정리하다가 예전에 테스트용으로 만들어두었던 내용들이 많고 필드가 변경된 부분이 있어서

데이터를 다시한번 싹 정리하면 좋겠다는 생각이 들었다.

 

그래서 DB의 테이블을 싹 지우고 다시 생성을 했는데 .json 파일을 import 하려고하니 에러가 발생하지는 않는데 

0 records imported가 발생했다. (실제 가게 데이터는 55개였는데 하나도 등록되지 않았다.)

 

데이터의 형태가 잘못 지정되어있을경우 발생할 수 있다고 해서 데이터 타입도 비교해봤으나 이상이 없었다.

그래서 여러가지로 시도하다보니 FK와 관련된 문제였다.

Store 엔티티는  Member엔티티와 매핑되는데 member 테이블에 매칭되는 정보가 없어서 등록되지 않은 문제였다.

 

Member 테이블에 회원 정보들을 입력해주고나니 store 정보도 입력이 되었다.

아래 그림과 같이 전달받은 store.csv 파일에는 55개의 가게 정보가 있었으나 memberId가 지정된 데이터는 1개여서 해당 데이터만 등록이 됐다.

 

데이터를 임의로 넣을때에도 연관관계를 생각해줘야한다는걸 다시한번 깨달을 수 있었다.

 

오늘은 가벼운 마음으로 이런 저런 사진도 찾아보고 데이터도 넣으면서 리프레시하는 시간도 됐던것같다!

물론 약 600건의 데이터를 넣으려다보니 아직 다 넣지는 못했지만.. 내일까지 작업하면 충분히 가능할것같다.

 

[참고자료]

CSV 파일로 테이블 생성하기

[MySQL] MySQL에서 CSV파일 Import하기