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

MySQL에서 텍스트 파일을 테이블로 가져올 때 빈 줄은 어떻게 처리될까?

텍스트 파일의 두 줄 사이에 빈 줄이 존재하면, MySQL은 해당 텍스트 파일을 테이블로 가져오는 과정에서 이 빈 줄도 하나의 데이터 행으로 간주합니다. 즉, 빈 줄이 유효한 데이터가 아니더라도 MySQL은 이를 데이터 라인으로 평가하여 테이블에 삽입합니다.

다음 예시를 통해 이를 쉽게 이해할 수 있습니다.

예제

텍스트 파일 'A.txt'의 두 줄 사이에 다음과 같이 빈 줄이 있다고 가정해 보겠습니다.

105,Chum,USA,11000

106,Danny,AUS,12000

이제 아래와 같은 쿼리를 작성하여 텍스트 파일의 데이터를 MySQL 테이블로 가져올 수 있습니다.

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee10_tbl FIELDS TERMINATED BY ',';
Query OK, 3 rows affected, 4 warnings (0.05 sec)
Records: 3 Deleted: 0 Skipped: 0 Warnings: 4

위 쿼리 결과를 보면 총 3개의 행이 업로드되었고, 4개의 경고(warnings)가 발생했음을 알 수 있습니다. 실제로 어떤 데이터가 업로드되었는지는 다음 쿼리로 확인할 수 있습니다.

mysql> Select * from employee10_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum           | USA      |  11000 |
|    0 | NULL           | NULL     |   NULL |
| 106  | Danny          | AUS      |  12000 |
+------+----------------+----------+--------+
3 rows in set (0.00 sec)

위 결과 집합을 보면, MySQL이 두 줄 사이의 빈 줄을 하나의 데이터 값으로 평가하여 해당 행의 숫자형 컬럼에는 0, 문자열 컬럼에는 NULL을 삽입한 것을 확인할 수 있습니다.

정리 및 주의 사항

이처럼 LOAD DATA 문을 사용할 때는 원본 텍스트 파일에 불필요한 빈 줄이 포함되어 있지 않은지 반드시 확인해야 합니다. 빈 줄이 있으면 의미 없는 더미 행이 테이블에 추가되고 경고가 발생하며, 이후 데이터 정합성 검증이나 집계 작업 시 오류의 원인이 될 수 있습니다.

빈 줄로 인한 문제를 방지하려면 다음과 같은 방법을 활용하는 것이 좋습니다.

  • 파일을 가져오기 전에 편집기나 스크립트로 빈 줄을 미리 제거
  • 가져온 후 DELETE FROM 테이블명 WHERE 컬럼 IS NULL; 같은 조건문으로 더미 행 삭제
  • 데이터 양이 많다면 임시 테이블에 먼저 적재한 뒤 검증하고 최종 테이블로 옮기는 방식 사용