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

MySQL에서 NULL 값이 포함된 테이블을 CSV 파일로 내보낼 때 \N 대신 다른 값으로 저장하는 방법

NULL 값이 포함된 테이블의 데이터를 CSV 파일로 내보낼 때 기본적으로 \N으로 표시되는 NULL을 다른 값으로 저장하고 싶다면 IFNULL 문을 활용하면 됩니다. IFNULL 문은 해당 컬럼의 값이 NULL일 경우 지정한 대체 값으로 치환해 주는 MySQL 함수입니다.

예제: student_info 테이블 내보내기

먼저 아래와 같은 데이터를 가진 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  |
| 150  | Saurabh | NULL       | Literature |
+------+---------+------------+------------+
7 rows in set (0.00 sec)

위 결과를 보면 id가 150인 행의 Address 필드가 NULL로 되어 있는 것을 확인할 수 있습니다. 이 상태로 내보내면 CSV 파일에 \N이 그대로 기록됩니다.

IFNULL을 사용한 내보내기 쿼리

아래 쿼리처럼 각 컬럼을 IFNULL 함수로 감싸면, NULL 값이 있는 자리에 'Not Applicable'이라는 문자열이 대신 저장됩니다.

mysql> Select IFNULL(id,'Not Applicable'), IFNULL(Name,'Not Applicable'), IFNULL(Address,'Not Applicable'), IFNULL(Subject,'Not Applicable') from Student_info INTO OUTFILE 'C:/mysql/bin/mysql-files/student_28.csv' FIELDS TERMINATED BY ',';
Query OK, 7 rows affected (0.02 sec)

내보내기 결과 확인

생성된 student_28.csv 파일을 열어보면, 원래 \N이 들어갔어야 할 자리에 'Not Applicable'이 저장된 것을 확인할 수 있습니다.

101   YashPal  Amritsar         History
105   Gaurav   Chandigarh       Literature
125   Raman    Shimla           Computers
130   Ram      Jhansi           Computers
132   Shyam    Chandigarh       Economics
133   Mohan    Delhi            Computers
150   Saurabh  Not Applicable   Literature

정리

이처럼 INTO OUTFILE과 함께 IFNULL 문을 사용하면 NULL 값을 원하는 문자열(예: 'Not Applicable', '-', 'N/A' 등)로 대체하여 CSV 파일을 깔끔하게 내보낼 수 있습니다. NULL 값이 여러 컬럼에 분포해 있다면 해당 컬럼마다 IFNULL을 적용해 주면 됩니다.