[MySQL] LOAD DATA csv, 엑셀파일 대용량 insert

약 30만개의 데이터를 insert 해야하는 이슈가 발생하였다.

데이터는 csv 파일로 전달받았고 엑셀파일 insert를 찾다가 LODE DATA INFILE 을 알게되어 정리해본다.


MYSQL - "LOAD DATA INFILE"

LOAD DATA INFILE은 CSV 파일 포맷이나 구분자로 구분된 데이터 파일을 읽어 MySQL 서버의 테이블로 저장한다.

대용량 insert에 최적화 되어있다.

MYSQL - "LOAD DATA INFILE" 예제

나같은 경우는 아래의 조건을 전제로 한다.

1. insert 하는 csv 파일명에 ‘,’ 는 다른 문자열로 치환한다

2. csv 파일을 서버에 업로드 한다.

3. csv와 컬럼 갯수가 동일하도록 테이블을 미리 생성해 놓는다.

▶한글 insert 입력 안되는 이슈 해결방법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#db 접속
./mysql -u아이디 -p
 
#insert할 테이블이 있는 데이터베이스 이동
mysql > use 데이터베이스
 
#LOAD DATA INFILE 명령어 실행
mysql > 
LOAD DATA INFILE '파일명'
IGNORE
INTO TABLE 테이블명
FIELDS
    TERMINATED BY ','
    OPTIONALLY ENCLOSED BY '"' ESCAPED BY '"'
LINES
    TERMINATED BY '\n'
    STARTING BY ''
cs

결과

속도 짱빠름..