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

MySQL 쿼리 결과를 텍스트(.txt) 또는 Excel(CSV) 파일로 저장하는 방법

MySQL 쿼리 결과를 파일로 저장하기 (INTO OUTFILE)

MySQL에서 쿼리 실행 결과를 텍스트(.txt) 파일이나 엑셀에서 열 수 있는 CSV 파일로 저장하려면 INTO OUTFILE 구문을 사용하면 됩니다. 이 구문은 SELECT 쿼리의 결과를 화면이 아닌 서버의 파일로 직접 출력해 주므로, 대량의 데이터를 백업하거나 다른 프로그램으로 넘겨야 할 때 매우 유용합니다.

아래에서 실제 예제를 통해 단계별로 살펴보겠습니다.

1단계: 테이블 생성

먼저 예제에 사용할 테이블을 생성합니다.

mysql> create table SaveintoTextFile
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.55 sec)

2단계: 데이터 삽입

생성한 테이블에 샘플 레코드를 입력합니다.

mysql> insert into SaveintoTextFile values(1,'John');
Query OK, 1 row affected (0.44 sec)

mysql> insert into SaveintoTextFile values(101,'Carol');
Query OK, 1 row affected (0.17 sec)

mysql> insert into SaveintoTextFile values(3,'David');
Query OK, 1 row affected (0.14 sec)

3단계: 저장된 데이터 확인

테이블에 정상적으로 데이터가 들어갔는지 조회해 봅니다.

mysql> select * from SaveintoTextFile;

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

+------+-------+
| id | name |
+------+-------+
| 1 | John |
| 101 | Carol |
| 3 | David |
+------+-------+
3 rows in set (0.00 sec)

4단계: INTO OUTFILE로 파일 저장

쿼리 결과를 텍스트 파일로 내보낼 때 사용하는 기본 문법은 다음과 같습니다.

SELECT col_name1, col_name2, ......N
FROM yourTableName
INTO OUTFILE "저장할 파일의 전체 경로";

여기서 주의할 점은, MySQL 8.0부터는 보안 정책상 secure_file_priv 시스템 변수에 지정된 디렉터리에만 파일을 저장할 수 있다는 것입니다. 허용된 경로를 모른다면 아래 명령으로 먼저 확인하세요.

mysql> SHOW VARIABLES LIKE 'secure_file_priv';

일반적인 Windows 환경에서는 C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/ 폴더가 기본 허용 경로입니다. 이제 위 문법을 실제 쿼리에 적용해 보겠습니다. 여기서는 출력 파일 이름을 "QueryOutput.txt"로 지정했습니다.

mysql> SELECT id, name FROM SaveintoTextFile
-> INTO OUTFILE "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/QueryOutput.txt";
Query OK, 3 rows affected (0.02 sec)

5단계: 파일 생성 확인

파일이 정상적으로 생성되었는지 확인하려면 MySQL 설치 폴더 아래의 Uploads 폴더를 열어봅니다.

MySQL 쿼리 결과를 텍스트(.txt) 또는 Excel(CSV) 파일로 저장하는 방법

이제 텍스트 파일을 열면 아래 스크린샷처럼 쿼리 결과가 그대로 저장되어 있는 것을 확인할 수 있습니다.

MySQL 쿼리 결과를 텍스트(.txt) 또는 Excel(CSV) 파일로 저장하는 방법

엑셀(Excel)에서 열고 싶다면?

결과를 엑셀에서 바로 열어야 한다면 파일 확장자를 .csv로 지정하고, 각 필드를 구분할 옵션을 추가하면 됩니다.

mysql> SELECT id, name FROM SaveintoTextFile
-> INTO OUTFILE "C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/QueryOutput.csv"
-> FIELDS TERMINATED BY ','
-> LINES TERMINATED BY '\n';

이렇게 생성된 CSV 파일은 엑셀에서 더블클릭만으로 바로 열 수 있으며, 각 컬럼이 셀 단위로 깔끔하게 분리됩니다.

마무리 및 참고 사항

  • 파일 경로: 반드시 secure_file_priv에 허용된 디렉터리를 사용해야 하며, 이미 같은 이름의 파일이 존재하면 오류가 발생하므로 사전에 삭제해 두어야 합니다.
  • 권한 문제: MySQL 서버 프로세스가 해당 폴더에 쓰기 권한을 가지고 있어야 합니다.
  • 대안: 클라이언트 쪽에 파일을 저장하고 싶다면 mysql -e "쿼리" > 파일명.txt 처럼 명령줄 리디렉션을 사용하는 방법도 있습니다.