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

MySQL 데이터 임포트 시 백슬래시 대신 다른 이스케이프 문자를 사용하면 어떻게 처리될까?

MySQL에서 ESCAPED BY 옵션으로 커스텀 이스케이프 문자 지정하기

백슬래시(\)는 MySQL의 기본 이스케이프 문자입니다. 따라서 텍스트 파일에 백슬래시가 포함되어 있다면, 텍스트 파일에서 테이블로 데이터를 가져올 때 쿼리에 이를 별도로 명시할 필요가 없습니다.

하지만 백슬래시 대신 다른 문자를 이스케이프 문자로 사용하는 경우에는, LOAD DATA 문에 ESCAPED BY 옵션을 사용하여 해당 문자를 반드시 지정해 주어야 합니다.

예제: 별표(*)를 이스케이프 문자로 사용하기

다음과 같이 텍스트 파일에서 별표 기호('*')를 이스케이프 문자로 사용했다고 가정해 보겠습니다.

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

이 텍스트 파일을 MySQL 테이블로 가져올 때는 아래와 같이 쿼리에 ESCAPED BY 옵션을 명시해야 합니다.

mysql> LOAD DATA LOCAL INFILE 'd:\A.txt' INTO table employee6_tbl FIELDS TERMINATED BY ',' ESCAPED BY '*' IGNORE 1 ROWS;
Query OK, 2 rows affected (0.03 sec)
Records: 2 Deleted: 0 Skipped: 0 Warnings: 0

여기서 IGNORE 1 ROWS 옵션은 첫 번째 행(컬럼 헤더)은 건너뛰고 데이터만 가져오도록 지정하는 역할을 합니다.

임포트 결과 확인

이제 SELECT 쿼리를 실행하여 실제로 어떻게 데이터가 저장되었는지 확인해 보겠습니다.

mysql> Select * from employee6_tbl;
+------+----------------+----------+--------+
| Id   | Name           | Country  | Salary |
+------+----------------+----------+--------+
| 105  | Chum,Marsh     | USA      | 11000  |
| 106  | Danny,Harrison | AUS      | 12000  |
+------+----------------+----------+--------+
2 rows in set (0.00 sec)

결과를 보면 별표(*)가 이스케이프 문자로 인식되어 제거되고, 'Chum,Marsh'처럼 쉼표가 포함된 값이 하나의 필드(Name)에 정상적으로 저장된 것을 확인할 수 있습니다. 만약 ESCAPED BY '*' 옵션을 지정하지 않았다면, 별표 뒤의 쉼표가 필드 구분자로 잘못 해석되어 데이터가 엉뚱한 컬럼에 들어갔을 것입니다.