MySQL과 데이터 파일 간의 정보 전송이란 데이터 파일에서 데이터베이스로 데이터를 가져오는 것(임포트) 또는 데이터베이스에서 데이터 파일로 데이터를 내보내는 것(익스포트)을 의미합니다. MySQL은 이러한 작업을 수행하기 위해 두 가지 SQL 문을 제공합니다.
1. LOAD DATA INFILE
LOAD DATA INFILE 문은 데이터 파일로부터 데이터베이스로 데이터를 가져올 때 사용합니다. 파일에 저장된 데이터 레코드를 직접 읽어 들여 테이블에 삽입하며, 대량의 데이터를 빠르게 적재할 때 특히 유용합니다. 기본 문법은 다음과 같습니다.
문법
LOAD DATA LOCAL INFILE '[경로/][파일명]' INTO TABLE [테이블명];
각 요소의 의미는 다음과 같습니다.
- 경로(path): 파일이 위치한 디렉터리 주소
- 파일명(file_name): 가져올 .txt 파일의 이름
- 테이블명(table_name): 데이터가 로드될 대상 테이블
참고로 LOCAL 키워드를 사용하면 클라이언트 측 파일에서, 생략하면 서버 측 파일에서 데이터를 읽어 옵니다.
사용 예시:
LOAD DATA LOCAL INFILE 'C:/data/student.txt' INTO TABLE student;
2. SELECT ... INTO OUTFILE
SELECT ... INTO OUTFILE 문은 데이터베이스의 데이터를 파일로 내보낼 때 사용합니다. SELECT 쿼리의 실행 결과를 지정한 파일에 그대로 기록하며, 테이블 데이터를 백업하거나 다른 시스템으로 옮길 때 자주 활용됩니다. 기본 문법은 다음과 같습니다.
문법
SELECT ... INTO OUTFILE '[경로/][파일명]' FROM [테이블명];
각 요소의 의미는 다음과 같습니다.
- 경로(path): 결과 파일이 저장될 디렉터리 주소
- 파일명(file_name): 생성될 .txt 파일의 이름
- 테이블명(table_name): SELECT 문으로 데이터를 조회할 테이블
사용 예시:
SELECT * INTO OUTFILE 'C:/data/student_backup.txt' FROM student;
두 구문의 관계
앞서 살펴본 두 구문은 서로 보완적인 관계입니다. LOAD DATA INFILE은 데이터 파일에서 데이터베이스로 데이터를 이동시키고, SELECT ... INTO OUTFILE은 데이터베이스에서 데이터 파일로 데이터를 이동시킵니다. 즉, 두 구문 모두 MySQL과 외부 파일 간의 데이터 전송을 담당한다는 공통점을 가지며, 이를 조합하면 데이터 백업·복원 및 시스템 간 데이터 마이그레이션 작업을 손쉽게 처리할 수 있습니다.