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

MySQL 테이블의 특정 필드만 CSV 파일로 내보내는 방법

개요

MySQL 테이블의 일부 컬럼(필드)만 CSV 파일로 내보내고 싶다면, SELECT ... INTO OUTFILE 문에 원하는 컬럼 이름을 지정하면 됩니다. 전체 테이블을 내보내는 대신 필요한 컬럼만 선택적으로 추출할 수 있어 데이터 백업이나 분석 작업 시 매우 유용합니다.

예제

다음과 같은 데이터가 담긴 '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' 두 컬럼만 파일로 내보내고 싶다면, 아래 쿼리처럼 SELECT 절에 해당 컬럼명을 명시하면 됩니다. 이 쿼리는 'Student_info' 테이블의 'id'와 'Name' 값만 'student1.csv'라는 파일로 내보냅니다.

mysql> Select id, Name from Student_info INTO OUTFILE 'C:/mysql/bin/mysql-files/student1.csv';
Query OK, 6 rows affected (0.07 sec)

쿼리 실행 후에는 'student1.csv'라는 파일이 생성되고, 해당 파일 안에 'id'와 'Name' 컬럼의 값만 저장됩니다.

완전한 CSV 형식으로 내보내기

기본 설정으로는 값이 탭(tab) 문자로 구분되어 출력되므로, 엑셀 등에서 바로 열 수 있는 표준 CSV 형식을 원한다면 FIELDS TERMINATED BY 옵션을 함께 지정하는 것이 좋습니다.

mysql> SELECT id, Name FROM Student_info
    -> INTO OUTFILE 'C:/mysql/bin/mysql-files/student1.csv'
    -> FIELDS TERMINATED BY ','
    -> LINES TERMINATED BY '\n';

주의 사항

INTO OUTFILE은 MySQL 서버가 실행 중인 호스트에 파일을 생성하며, 서버의 secure_file_priv 시스템 변수에 지정된 디렉터리(위 예제에서는 C:/mysql/bin/mysql-files)에만 출력할 수 있습니다. 또한 동일한 이름의 파일이 이미 존재하면 오류가 발생하므로, 새 파일 이름을 사용해야 합니다.