Skip to the content.

Load Data

https://dev.mysql.com/doc/refman/8.0/en/load-data.html

기본 형식

LOAD DATA
    [LOW_PRIORITY | CONCURRENT] [LOCAL]
    INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [PARTITION (partition_name [, partition_name] ...)]
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number {LINES | ROWS}]
    [(col_name_or_user_var
        [, col_name_or_user_var] ...)]
    [SET col_name={expr | DEFAULT}
        [, col_name={expr | DEFAULT}] ...]


옵션 설명

# csv 파일 위치 지정 (S3 마운트 되어있다면 S3 디렉토리도 지정 가능)
INFILE

# 데이터를 넣을 테이블 지정
INTO TABLE

# 필드 파싱 방법 지정
FIELDS 
TERMINATED BY '\t' # 구분자
OPTIONALLY
ENCLOSED BY ''     # 데이터가 감싸져 있는 형태
ESCAPED BY '\\'    # Backslash 문자 치환

# 라인 파싱 방법 지정
LINES
TERMINATED BY '\n' # 구분자
STARTING BY ''     # 시작 문자

#필드, 라인 옵션 기본값 (따로 지정하지 않을 경우)
FIELDS TERMINATED BY '\t' ENCLOSED BY '' ESCAPED BY '\\'
LINES TERMINATED BY '\n' STARTING BY ''

# 해당 데이터 무시
IGNORE


LOAD DATA를 사용하기 위한 권한 설정

# 확인
SHOW VARIABLES LIKE 'local_infile';
/*
Variable_name, Value
local_infile	ON
*/

# DB 접속  해당 파라미터 값을 1 넘김
load_infile=1

# DB 파라미터  변경
SET GLOBAL local_infile = 1;

관련 에러 (3948)


Backslash 문자로 인한 오류가 발생한다면

# ESCAPED BY 옵션을 아래와 같이 지정
ESCAPED BY ''