본문 바로가기

개발TIP - DEVELOPMENT

Mysql DB 쿼리 결과를 CSV 파일로 저장하기

반응형

Mysql DB에서 통계 뽑을 일이 있어서 좀 무식한 쿼리를 돌렸는데요

 

너무 무식해서 그런지 phpmyadmin에서 내보내기 기능이 동작을 안합니다. ㅠㅠ

 

그래서 콘솔에서 직접 쿼리를 날리고 파일로 저장하는 방법으로 처리했네요.

파일로 저장안하고 그냥 터미널에 나오는 결과를 복사해서 쓰기에는 또 엑셀 처리가 어려워서 csv로 저장하였습니다.

 

파일로 바로 저장하는 방법은 쿼리문 뒤에 INTO OUTFILE 부분을 붙여 주시면 됩니다.

SELECT * FROM `Table Name` WHERE 조건문 into outfile '/usr/local/test.csv' fields terminated by ',' enclosed by "'"

 

뒷부분의 FIELDS TERMINATED BY 는 각각의 결과 필드들의 구분자를 콤마(,)로 할지 다른 특수문자등으로 처리할지 결정하는 겁니다.

예를들어 탭(TAB)을 각 필드간 구분자로 설정하려면 Terminated by '\t'로 써주시면 됩니다.

저는 데이타 중간중간에 콤마가 포함된 것들이 있어서 실제로는 탭으로 처리하였습니다.

 

enclosed by는 데이타 중에 줄바꿈등의 처리가 되어있는 경우 엑셀로 데이터로 가져다 붙이면 셀이 바뀌어 버리는 경우가 있는데요.

한 필드의 데이터로 처리할 수 있도록 각 필드 데이터의 양끝에 쌍따옴표(double quotation)으로 감싸주는 명령입니다.

 

엑셀이 정말 기능도 많고 업무처리할때는 유용한데 데이터가 많거나 한 경우는 너무 처리하는데 오래걸려서 제 맥북에다가 APM을 설치해서 DB에 데이타를 저장해놓고, 좀 복잡한 결과를 찾아야 하는 경우는 DB 쿼리 -> CSV 저장 -> 엑셀에서 마무리 하고 있는데 꽤 효과적입니다. 

엑셀이 뻗어서 다시 돌려야 하는 경우도 없고요.

 

또 다른 장점은 DB에 있는 데이터를 엑셀의 데이터 연결 기능을 활용해서 DB의 자료를 바로 엑셀로 불러와서 처리도 가능하다는 거겠네요. 

 

이렇게 DB와 엑셀을 같이 연결해서 사용하니 이전에 아예 엄두를 못내거나 하던 작업도 꽤 수월하게 처리할 수 있었습니다.


반응형