MySQL Load Data Infile

1 min read

JdbcTemplate을 사용해서 다음 명령 실행시

LOAD DATA LOCAL INFILE '[FILENAME]'
REPLACE INTO TABLE [TABLE]
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES

다음과 같은 에러가 발생할 경우

java.sql.SQLSyntaxErrorException: The used command is not allowed with this MySQL version

datasource 주소에 allowLoadLocalInfiletrue로 설정한다.

spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306?allowLoadLocalInfile=false

로드하는 데이터 중 "Hello\" 와 같은 값이 있을 경우, 이스케이프 문자를 제거해서 로드한다.

...
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY ''
LINES TERMINATED BY '\n'
...

© 2023 Raegon Kim