오늘 포스팅할 내용은 프로젝트 중에 발견한 애로사항과 그 해결 과정을 공유해서 같은 문제를 겪는 사람들에게 도움이 되고자 하는 마음에 올리는 포스팅이다!
바로 본론으로 들어가겠다.
CSV 파일은 , (콤마)로 컬럼들을 구분하도록 되어있는 파일이다. 하지만 내용에 ',' 이 들어있으면 파싱 시 맞지 않는 컬럼에 데이터가 이상하게 쪼개져 들어가게 된다.
나는 이번 프로젝트 진행 중, CSV 파일의 모든 데이터를 DB에 넣는 작업을 거쳐야 했다.
"CSV는 당연히 콤마를 기준으로 데이터들이 분류되어있는 파일이니까 split(",") 를 하면 row에서 column들이 알아서 분리되겠지?" 라는 생각에 로직을 이대로 작성했고 문제는 여기서 발생했다.
컬럼의 내용 중에 ,(콤마) 를 포함한 데이터가 많이 있었고, 그래서 데이터가 엉망으로 저장되었다.
이런 식으로 말도 안 되는 값을 가진 컬럼들이 나타나 버렸다..
문제를 해결하기 위해 고민하던 중 해결책을 떠올렸다. CSV 파일의 구분자를 바꾸는 것이었다.
지금부터 CSV 파일의 구분자 변경법에 대해 알아보자!
제어판의 국가 또는 지역 설정으로 들어간다.
그리고 구분자 변경을 위해 추가 설정 버튼을 눌러준다.
목록 구분 기호는 CSV 파일의 구분자이고 원래 ',' 로 되어있는데 우리는 '|' 나 '@' 중 마음에 드는 대로 사용하면 된다.
변경 후에 확인을 눌러준다.
(설명을 위해 찍은 캡처본에는 '|' 를 썼지만 내 컴퓨터에서는 인식을 잘 못해서 추후에 '@' 로 변경하였다.)
설정이 완료되었으면 CSV 엑셀 파일에 들어가서 '파일 - 내보내기' 버튼을 눌러준다.
그럼 이런 창이 나타나는데 '파일 형식 변경' 버튼을 누른 뒤에
CSV (쉼표로 분리) 를 눌러주면 된다. 만약 이렇게 했는데 DB에서 알 수 없는 외계어가 나타나면서 인식을 잘 못한다면 인코딩 문제이므로
바로 밑의 다른 파일 형식으로 저장을 누르고 CSV UTF8 (쉼표로 분리) 를 선택해주면 해결할 수 있다.
이제 쉼표가 아닌 '|' 가 구분자로 사용된 CSV 파일이 되었다.
마지막으로 원래 ,(콤마) 로 분리되도록 설정해놓았던 코드를 변경해준다.
자신이 변경한 구분자로 split 부분을 변경해주면 끝이다. 이제 데이터를 저장해 보면 문제가 잘 해결되었다는 것을 알 수 있다.
구분자를 ',' 에서 '|' 로 변경하니 DB 저장이 정상적으로 수행되었다.
오늘은 이렇게 CSV 파일 ,(콤마) 말고 다른 구분자로 변경하는 방법에 대해 알아보았다.
같은 문제를 겪고 있는 사람들에게 도움이 되었으면 좋겠고 다음에도 좋은 포스팅으로 찾아뵙겠습니다!
'Language > Java' 카테고리의 다른 글
[Java] - Comparable 인터페이스란? (1) | 2023.01.21 |
---|---|
[JAVA] ObjectMapper를 통한 손쉬운 객체 형식 변환 (2) | 2022.09.17 |
[Java] 여러 데이터를 저장하는 법 - Array, List, Map (3) | 2022.08.15 |
[객체지향] SOLID 원칙이란? (4) | 2022.03.28 |
[JAVA] 자바 JVM, JRE, JDK 차이 (2) | 2022.01.20 |