MySQL에서 테이블의 전체 데이터를 텍스트 파일로 내보내려면 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)
이제 다음과 같은 쿼리를 실행하면 Student_info 테이블의 모든 데이터를 student.txt라는 파일로 내보낼 수 있습니다.
mysql> Select * from student_info INTO OUTFILE 'C:/mysql/bin/mysql-files/student.txt'; Query OK, 6 rows affected (0.01 sec)
위 쿼리를 실행하면 지정한 경로에 student.txt 파일이 생성되고, Student_info 테이블의 모든 데이터가 해당 파일에 저장됩니다.
참고 사항
INTO OUTFILE을 사용할 때는 몇 가지 주의할 점이 있습니다.
- 출력 파일은 MySQL 서버가 실행 중인 호스트 머신에 생성되며, 클라이언트 PC가 아닙니다.
- 동일한 이름의 파일이 이미 존재하면 보안상의 이유로 쿼리가 실패합니다. 기존 파일을 덮어쓰지 않으므로, 미리 삭제하거나 새로운 파일명을 사용해야 합니다.
- 서버 설정 변수인
secure_file_priv에 지정된 디렉터리 안에서만 파일을 생성할 수 있습니다. 위 예제에서는C:/mysql/bin/mysql-files/가 그에 해당합니다. - 탭 구분 등 출력 형식을 바꾸고 싶다면
FIELDS TERMINATED BY,LINES TERMINATED BY같은 옵션을 추가로 활용할 수 있습니다.