CSV(Comma-Separated Values)는 스프레드시트나 데이터베이스처럼 표 형태의 데이터를 저장하기 위한 간단한 파일 형식입니다. MySQL 테이블의 데이터를 CSV 파일로 내보낼 때는 FIELDS TERMINATED BY 옵션을 활용할 수 있습니다. 이 옵션을 사용하면 각 필드의 값이 CSV 파일에서 서로 다른 셀에 구분되어 저장되도록 지정할 수 있습니다.
예제로 살펴보기
먼저 다음과 같은 데이터가 담긴 Student_info 테이블이 있다고 가정해 보겠습니다.
mysql> Select * from Student_info; +------+---------+------------+------------+ | id | Name | Address | Subject | +------+---------+------------+------------+ | 101 | YashPal | Amritsar | History | | 105 | Gaurav | Chandigarh | Literature | | 125 | Raman | Shimla | Computers | | 130 | Ram | Jhansi | Computers | | 132 | Shyam | Chandigarh | Economics | | 133 | Mohan | Delhi | Computers | +------+---------+------------+------------+ 6 rows in set (0.07 sec)
위 테이블에서 id와 Name 두 개의 컬럼만 CSV 파일로 내보내고 싶다면, 아래와 같은 쿼리를 사용하면 됩니다. 이 쿼리는 Student_info 테이블에서 해당 컬럼의 값만 추출하여 student2.csv라는 파일에 저장합니다.
mysql> Select id, Name from Student_info INTO OUTFILE 'C:/mysql/bin/mysql-files/student2.csv' FIELDS TERMINATED BY ','; Query OK, 6 rows affected (0.07 sec)
이 쿼리가 실행되면 student2.csv 파일이 생성되며, id와 Name 컬럼의 값들이 쉼표(,)를 기준으로 구분되어 각각 다른 셀에 기록됩니다.
추가로 알아두면 좋은 옵션들
FIELDS TERMINATED BY 외에도 CSV 내보내기 시 유용하게 쓸 수 있는 옵션이 몇 가지 더 있습니다.
- LINES TERMINATED BY '\n': 행을 구분하는 문자를 지정합니다. 윈도우 환경에서는 '\r\n'을 사용하기도 합니다.
- OPTIONALLY ENCLOSED BY '"': 필드 값을 큰따옴표로 감싸서, 값 안에 쉼표가 포함된 경우에도 데이터가 깨지지 않도록 합니다.
- ENCLOSED BY: 모든 필드 값을 지정한 문자로 감쌉니다.
이러한 옵션들을 조합하면 엑셀 등 다른 프로그램에서 열어도 깨짐 없이 정상적으로 표시되는 CSV 파일을 만들 수 있습니다.