작고 귀여운 문제가 있었다.
프로젝트에 데이터를 넣으려고 50행 정도 작업했는데, content 자리에 개행된 데이터를 넣으니 에러가 마구마구 나는 거다.
데이터는 이런 식으로 생겼는데, 처음에 한 행만 작업해서 csv로 만든 후 작업했을 때에는 괜찮았던 것이 전체 데이터를 작업하고 나니 에러가 되어 나타났다.
,를 처리하지 않은 거야 내 문제지만 콤마 없는 개행이 다음 데이터로 취급되는 건 생각지도 못한 문제였다. 처음에 2행 작업해서 확인했어야 했는데 내 불찰이다.
그래서 이리저리 찾아 봤는데, CSV 파일을 가지고 개행문자 /n
을 매 개행되는 부분마다 만들고 콤마를 없애 가며 작업하는 건 여러 모로 무리가 있어서 그거 말고 다른 방법을 찾으려 애썼다. 그런데 아무리 해도 이게 쉽지가 않았다.
일단 엑셀로 데이터를 삽입하는 방법이 있다기에 킵해 두고 csv 파일로 해결하는 방법을 찾고 또 찾아봤는데, 데이터 자체를 손봐야 한다는 결론에서 벗어날 수가 없었다. 자바 프로젝트를 했던 기억을 헤집어 보아도 <textarea>
에 데이터를 넣고 <pre>
를 썼다는 생각밖에 안 나는 거다.
결국 포기하고 openpyxl 라이브러리를 찾아보니, 놀랍게도 원래 csv를 DB에 insert할때 사용하던 것과 크게 다르지 않았다. 정확히 말하자면, 같았다!
os와 csv를 import하고,
setdefault()를 사용해 프로젝트의 settings를 잡고,
django.setup()을 해주고,
파일을 reader()로 열어서 for문을 돌려 create를 한다.
os와 openpyxl을 import하고,
setdefault()를 사용해 프로젝트의 settings를 잡고,
django.setup()을 해주고,
파일을 load_workbook()로 열어서 for문을 돌려 create를 한다.
우와... 진짜 똑같다.
오히려 이게 더 간단하기까지 하다.
파일을 열어 저장하고, dict처럼 시트의 이름을 가지고 데이터를 꺼내고, 해당 데이터에서 내가 원하는 만큼 슬라이싱해 담아 for문을 돌리는 거다. 놀랍게도 간단해서 조금 허망할 정도였다.
그리고 이렇게 잘 집어넣으면??
개행문자도 예쁘게 잘 들어가 있는 걸 확인할 수 있다!