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

MySQL에서 라인 접두사가 있는 텍스트 파일을 테이블로 가져오는 방법

텍스트 파일에 라인 접두사(line prefix)가 포함되어 있는 경우, MySQL의 LINES STARTING BY 옵션을 사용하면 해당 접두사를 기준으로 필요한 라인만 골라서 테이블로 가져올 수 있습니다. 이 옵션을 지정하면 접두사가 없는 라인은 자동으로 무시되므로, 원하는 데이터만 정확하게 적재할 수 있습니다. 다음 예제를 통해 자세히 살펴보겠습니다.

예제

텍스트 파일에서 'VALUE:'를 라인 접두사로 사용한다고 가정해 보겠습니다. 파일 내용은 다음과 같습니다.

id,       Name,     Country,        Salary
VALUE:105,   Chum*,     Marsh,USA,       11000
106,        Danny*,    Harrison,AUS,    12000

이 텍스트 파일을 MySQL 테이블로 가져올 때는 쿼리에 LINES STARTING BY 옵션을 함께 지정해야 합니다.

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee8_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' LINES STARTING BY 'Value:' IGNORE 1 ROWS;
Query OK, 1 row affected (0.07 sec)
Records: 1 Deleted: 0 Skipped: 0 Warnings: 0

실제로 어떤 데이터가 테이블에 들어갔는지 아래 쿼리로 확인해 보겠습니다.

mysql> Select * from employee8_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      |  11000 |
+------+----------------+----------+--------+
1 row in set (0.00 sec)

결과를 보면 하나의 레코드만 테이블에 저장된 것을 알 수 있습니다. 그 이유는 첫 번째 데이터 행 앞에 라인 접두사인 'VALUE:'가 붙어 있지만, 두 번째 행(106)에는 접두사가 없기 때문입니다. MySQL은 접두사가 없는 라인을 모두 무시하고 넘어갑니다.

접두사가 있는 라인 추가하기

이번에는 텍스트 파일에 접두사 'VALUE:'가 붙은 새로운 라인을 하나 더 추가해 보겠습니다.

id,          Name,                Country,     Salary
Value:105,    Chum*,               Marsh,USA,   11000
106,         Danny*,Harrison,     AUS,         12000
Value:107,    Raman*,Kumar,        IND,         25000
mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee8_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' LINES STARTING BY 'Value:' IGNORE 1 ROWS;
Query OK, 2 rows affected (0.07 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0

다시 테이블 내용을 확인해 보면 접두사가 붙은 두 개의 레코드가 모두 정상적으로 저장된 것을 볼 수 있습니다.

mysql> Select * from employee8_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      |  11000 |
| 107  | Raman,Kumar    | IND      |  25000 |
+------+----------------+----------+--------+
2 rows in set (0.00 sec)

이처럼 LINES STARTING BY 옵션을 활용하면 지정한 접두사('VALUE:')로 시작하는 라인만 선택적으로 가져올 수 있습니다. 접두사가 없는 라인은 모두 건너뛰기 때문에, 특정 형식의 로그 파일이나 여러 형식이 섞인 데이터 파일에서 필요한 부분만 추출해 적재할 때 매우 유용한 기능입니다.