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을 적용해 주면 됩니다.