Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 열 헤더를 첫 번째 줄로 포함하여 데이터를 CSV 파일로 내보내는 방법

CSV 파일로 데이터를 내보낼 때 첫 번째 줄에 열 이름(헤더)을 포함하려면 UNION 문을 활용해야 합니다. MySQL의 INTO OUTFILE 구문 자체에는 헤더를 추가하는 기능이 없기 때문에, 열 이름을 문자열로 반환하는 SELECT 문과 실제 데이터를 조회하는 SELECT 문을 UNION으로 결합하는 방식을 사용합니다. 아래 예제를 통해 그 과정을 살펴보겠습니다.

예제

다음 예제에서는 student_info 테이블의 데이터를 CSV 파일로 내보냅니다. 이때 생성되는 CSV 파일의 첫 번째 줄에는 각 열의 이름(id, Name, Address, Subject)이 헤더로 표시됩니다.

mysql> (SELECT 'id', 'Name', 'Address', 'Subject')
UNION
(SELECT id, Name, Address, Subject FROM student_info
INTO OUTFILE 'C:/mysql/bin/mysql-files/student_25.CSV'
FIELDS ENCLOSED BY '"' TERMINATED BY ';' ESCAPED BY '"'
LINES TERMINATED BY '\r\n');
Query OK, 7 rows affected (0.04 sec)

위 쿼리를 실행하면 MySQL은 Student_25.CSV 파일을 생성하며, 파일의 내용은 다음과 같습니다.

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"

쿼리 동작 원리

  • 첫 번째 SELECT 문: 'id', 'Name', 'Address', 'Subject'라는 문자열 값을 반환하여 CSV 파일의 헤더 행 역할을 합니다.
  • 두 번째 SELECT 문: student_info 테이블에서 실제 데이터를 조회합니다.
  • UNION: 두 결과 집합을 하나로 결합하여 헤더가 데이터보다 먼저 출력되도록 만듭니다.
  • INTO OUTFILE 옵션: FIELDS ENCLOSED BY는 각 필드를 큰따옴표(")로 묶고, TERMINATED BY는 필드 구분자를 세미콜론(;)으로 지정하며, LINES TERMINATED BY는 각 레코드를 \r\n(캐리지 리턴 + 줄 바꿈)으로 구분합니다.

이처럼 UNION 문을 활용하면 별도의 후처리 작업 없이도 헤더가 포함된 CSV 파일을 손쉽게 생성할 수 있습니다.