텍스트 파일의 특정 열만 MySQL 테이블로 가져오기
텍스트 파일에는 일부 특정 열의 값만 저장되어 있는데, 데이터를 가져올 MySQL 테이블에는 그보다 많은 열이 존재하는 경우가 있습니다. 이럴 때는 LOAD DATA 구문에 해당 열의 이름을 직접 명시함으로써, 텍스트 파일에 있는 값들을 원하는 열에만 삽입할 수 있습니다.
예제 시나리오
다음과 같이 텍스트 파일에 'id', 'Name', 'Salary' 세 개 열의 값만 저장되어 있다고 가정해 보겠습니다.
105,Chum,11000 106,Danny,12000
가져오기 쿼리 작성하기
이 텍스트 파일을 MySQL 테이블로 가져올 때는, 파일에 값이 존재하는 열들의 이름을 쿼리 끝부분에 괄호로 묶어 명시해야 합니다.
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee9_tbl FIELDS TERMINATED BY ','(id, Name, Salary); Query OK, 2 rows affected (0.04 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
결과 확인
데이터가 정상적으로 들어갔는지 테이블 전체를 조회해 보겠습니다.
mysql> Select * from employee9_tbl; +------+----------------+----------+--------+ | Id | Name | Country | Salary | +------+----------------+----------+--------+ | 105 | Chum | NULL | 11000 | | 106 | Danny | NULL | 12000 | +------+----------------+----------+--------+ 2 rows in set (0.00 sec)
위 결과 집합을 보면, MySQL은 Id, Name, Salary 세 개 열의 값만 가져왔음을 확인할 수 있습니다. 텍스트 파일에 값이 없던 'Country' 열에는 자동으로 NULL이 저장된 것을 볼 수 있습니다.
핵심 정리
- 열 목록 위치: 열 이름 목록은 INTO TABLE 절과 FIELDS TERMINATED BY 절 뒤에 괄호로 감싸서 작성합니다.
- 구분자 지정: FIELDS TERMINATED BY 옵션으로 텍스트 파일 내 값 구분자(여기서는 쉼표)를 지정합니다.
- 누락된 열 처리: 파일에 없는 열은 NOT NULL 제약 조건이 없다면 NULL로 채워집니다.
- LOCAL 키워드: LOAD DATA LOCAL INFILE을 사용하면 클라이언트 쪽 파일을 서버의 테이블로 가져올 수 있습니다.