탭이나 쉼표로 구분된 텍스트 파일을 MySQL 테이블에 읽어 들이는 방법입니다. 원노트의 소프트웨어 목록 적재 예제를 사용합니다. 대상 테이블과 컬럼 자료형을 먼저 준비하고 데이터 파일의 문자 인코딩·구분자·개행 형식을 확인합니다.
허용된 파일 경로 확인
LOCAL을 붙이지 않은 LOAD DATA INFILE은 MySQL 서버가 자신의 파일시스템에서 파일을 읽습니다. 접속한 PC에 파일이 있다는 것만으로는 읽을 수 없습니다. secure_file_priv의 설정값에 따라 허용 디렉터리가 제한되거나 작업 자체가 비활성화될 수 있습니다.
SHOW VARIABLES LIKE 'secure_file_priv';
SHOW CREATE TABLE appdb.sw_list;설정이 /var/lib/mysql-files/라면 그 아래에 파일을 준비합니다. 서버의 mysql 계정이 읽을 수 있도록 권한을 부여하되 다른 사용자에게 불필요하게 공개하지 않습니다. 이를 피하려고 secure_file_priv를 무조건 비우지 않습니다.
적재 구문 작성
다음은 첫 행이 헤더인 UTF-8 TSV 파일을 읽는 예시입니다. FIELDS는 컬럼 구분자, LINES는 행 구분자이며 괄호 안 컬럼 순서는 입력 파일과 일치해야 합니다.
LOAD DATA INFILE '/var/lib/mysql-files/swlist.tsv'
INTO TABLE appdb.sw_list
CHARACTER SET utf8mb4
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS
(sw_name, sw_publisher, category);
SHOW WARNINGS;Windows에서 만든 파일은 개행이 \r\n인지 확인합니다. 따옴표를 포함한 CSV라면 ENCLOSED BY 등 파일 형식에 맞는 옵션이 추가로 필요합니다. 단순히 확장자만 바꿔 같은 구문을 사용하지 않습니다.
적재 결과 확인
바로 운영 테이블에 넣기보다 시험 테이블에서 행 수, 한글 인코딩, NULL·빈 값, 숫자 변환과 중복 키 처리 결과를 확인합니다. LOAD DATA의 경고는 실행 직후 SHOW WARNINGS로 확인합니다. 재실행하면 중복으로 들어갈 수 있으므로 실패 시 되돌리는 방식과 재처리 기준을 미리 정합니다.