2021. 3. 26. 12:16

파일에서 Data를 직접 Table로 Import 시키기(MySQL)

MySQL(MariaDB) 에서 구분자로 구분되어 있는 파일을 읽어 바로 Table에 집어 넣는 기능

 

LOAD DATA INFILE 파일이름 INTO TABLE 테이블이름
FIELDS TERMINATED BY 컬럼구분자
LINES TERMINATED BY 라인구분자
(
     컬럼으로 구분되는 항목 대응 변수들(@로 시작)
) SET
     각 컬럼명 = 변수들(후처리가 필요한 경우 사용)


LOAD DATA INFILE 파일이름 INTO TABLE 테이블이름
위의 항목을 다 써야 하는 것은 아니고,

FIELDS TERMINATED BY 컬럼구분자

이정도만 써도 동작은 할 수 있음

 

예제 : (SET이하 부분에 괄호가 없음에 주의!!!)

LOAD DATA INFILE 'c:\\temp\\sample.txt' INTO TABLE tbl_sample
FIELDS TERMINATED BY '^'
LINES TERMINATED BY '\r\n'
(
	@code1,
	@code2,
	@code3
) SET 
	`code1` = @code1,
	`code2` = TRIM(@code2),
	`code3` = @code3,
	`InsertDate` = date_format(NOW(),'%Y%m%d%H%i%S');

 

관련 내용:

1. table의 컬럼갯수가 data 파일의 컬럼갯수 보다 많은 경우(추가 데이터가 필요한 경우) 

: 위의 예제처럼 SET 부분에 컬럼명 및 데이터를 써줌

2. 파일의 내용에 대한 수정이 필요한 경우

: 위의 예제 처럼 SET 부분에 TRIM같은 식으로 후 처리 가능

3. Table의 마지막 컬럼에서 데이터 사이즈 경고가 나오는 경우

: 줄 끝에 대한 인식이 정상적으로 처리 되지 않아서 발생하는 현상으로 LINES TERMINATED BY 문을 사용하면 됨

 

참고 URL : dev.mysql.com/doc/refman/8.0/en/load-data.html