때로는 입력용 텍스트 파일의 첫 번째 행에 열(컬럼) 이름이 함께 들어 있는 경우가 있습니다. 이처럼 헤더가 포함된 텍스트 파일에서 MySQL 테이블로 데이터를 가져오려면 'IGNORE n ROWS' 옵션을 사용해야 합니다. 이 옵션은 지정한 행 수만큼 건너뛰고 나머지 데이터만 테이블에 삽입하도록 MySQL에 지시합니다.
예제
다음은 A.txt 파일에 저장된 쉼표로 구분된 값(CSV)입니다. 첫 번째 행에는 각 열의 이름이 기록되어 있습니다.
Id,Name,Country,Salary 100,"Ram","INDIA",25000 101,"Mohan","INDIA",28000
이 데이터를 아래와 같이 미리 생성해 둔 employee3_tbl 테이블로 가져오려고 합니다.
mysql> Create table employee3_tbl(Id Int, Name Varchar(20), Country Varchar(20), Salary Int); Query OK, 0 rows affected (0.1 sec)
IGNORE 1 ROWS 옵션으로 데이터 가져오기
파일에서 데이터베이스 테이블로 데이터를 전송할 때는 다음과 같이 LOAD DATA 문에 'IGNORE 1 ROWS' 옵션을 추가합니다.
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee3_tbl FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 1 ROWS; Query OK, 2 rows affected (0.16 sec) Records: 2 Deleted: 0 Skipped: 0 Warnings: 0
위 쿼리에서 MySQL은 파일의 첫 번째 행, 즉 열 이름이 적힌 헤더 행을 무시하고 두 번째 행부터 데이터를 읽어 들입니다. 무시할 행의 개수는 'IGNORE n ROWS' 옵션에서 n 자리에 지정한 값에 따라 달라집니다. 예를 들어 헤더가 두 줄이라면 'IGNORE 2 ROWS'로 설정하면 됩니다.
결과 확인
테이블을 조회해 보면 A.txt 파일의 데이터가 정상적으로 삽입된 것을 확인할 수 있습니다.
mysql> Select * from employee3_tbl; +------+-------+---------+--------+ | Id | Name | Country | Salary | +------+-------+---------+--------+ | 100 | Ram | INDIA | 25000 | | 101 | Mohan | INDIA | 28000 | +------+-------+---------+--------+ 2 rows in set (0.00 sec)
위 결과 집합을 보면 A.txt 파일의 실제 데이터 두 건만 테이블에 전송되었고, 열 이름이 있던 첫 번째 행은 무시된 것을 알 수 있습니다. 이처럼 'IGNORE n ROWS' 옵션을 활용하면 헤더가 포함된 텍스트 파일도 손쉽게 MySQL 테이블로 가져올 수 있습니다.