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

MySQL CONCAT_WS() 함수로 쿼리 결과를 CSV 형식으로 출력하는 방법

MySQL에서 쿼리 결과를 CSV(쉼표로 구분된 값) 형식으로 출력하려면 CONCAT_WS() 함수를 사용하면 됩니다. CONCAT_WS는 'Concatenate With Separator'의 약자로, 여러 문자열을 지정한 구분자로 연결해주는 유용한 함수입니다.

CONCAT_WS() 기본 문법

SELECT CONCAT_WS(',', 컬럼명1, 컬럼명2, 컬럼명3, ....N) AS 별칭 FROM 테이블명;

첫 번째 인자에는 구분자(여기서는 쉼표 ',')를 지정하고, 이후 연결하고 싶은 컬럼들을 나열합니다. 문법을 더 쉽게 이해하기 위해 실제 예제 테이블을 만들어 보겠습니다.

예제 테이블 생성

먼저 학생 정보를 저장할 테이블을 생성하는 쿼리입니다.

mysql> create table CSVFormatOutputs
    -> (
    -> StudentId int not null auto_increment,
    -> StudentName varchar(20),
    -> StudentAge int,
    -> PRIMARY KEY(StudentId)
    -> );
Query OK, 0 rows affected (1.15 sec)

데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into CSVFormatOutputs(StudentName,StudentAge) values('Mike',23);
Query OK, 1 row affected (0.26 sec)

mysql> insert into CSVFormatOutputs(StudentName,StudentAge) values('John',26);
Query OK, 1 row affected (0.19 sec)

mysql> insert into CSVFormatOutputs(StudentName,StudentAge) values('Sam',19);
Query OK, 1 row affected (0.20 sec)

mysql> insert into CSVFormatOutputs(StudentName,StudentAge) values('Carol',27);
Query OK, 1 row affected (0.59 sec)

mysql> insert into CSVFormatOutputs(StudentName,StudentAge) values('Bob',24);
Query OK, 1 row affected (0.15 sec)

저장된 데이터 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from CSVFormatOutputs;

실행 결과는 다음과 같습니다.

+-----------+-------------+------------+
| StudentId | StudentName | StudentAge |
+-----------+-------------+------------+
|         1 | Mike        |         23 |
|         2 | John        |         26 |
|         3 | Sam         |         19 |
|         4 | Carol       |         27 |
|         5 | Bob         |         24 |
+-----------+-------------+------------+
5 rows in set (0.00 sec)

CONCAT_WS()로 CSV 형식 출력하기

이제 CONCAT_WS() 함수를 사용해 각 행의 데이터를 쉼표로 구분된 하나의 문자열로 출력해 보겠습니다.

mysql> select concat_ws(',',StudentId,StudentName,StudentAge) as CSVFormat from CSVFormatOutputs;

실행 결과, 각 레코드가 CSV 형식으로 깔끔하게 출력되는 것을 확인할 수 있습니다.

+------------+
| CSVFormat  |
+------------+
| 1,Mike,23  |
| 2,John,26  |
| 3,Sam,19   |
| 4,Carol,27 |
| 5,Bob,24   |
+------------+
5 rows in set (0.00 sec)

참고 사항

CONCAT_WS() 함수의 장점 중 하나는 NULL 값을 자동으로 무시한다는 점입니다. 일반 CONCAT() 함수는 인자 중 하나라도 NULL이면 전체 결과가 NULL이 되지만, CONCAT_WS()는 NULL인 컬럼을 건너뛰고 나머지 값들만 구분자로 연결해 줍니다. 따라서 데이터에 NULL이 포함될 가능성이 있는 경우 CSV 형식 변환 시 CONCAT_WS()를 사용하는 것이 훨씬 안전합니다.