본문 바로가기
MySql

MySQL ON DUPLICATE KEY UPDATE를 사용하여 MySQL로드 데이터 INFILE

by 베이스 공부 2021. 1. 9.
반응형


그러나 ON DUPLICATE KEY UPDATE REPLACE 보다 장점이 있습니다. 후자는 중복이 존재할 때 삭제 및 삽입을 수행합니다. 이로 인해 키 관리에 대한 오버 헤드가 발생합니다. 또한 자동 증가 ID는 교체시 동일하게 유지되지 않습니다.

LOAD DATA INFILE을 사용할 때 ON DUPLICATE KEY UPDATE 를 어떻게 에뮬레이션 할 수 있습니까?

 

해결 방법

 

다음 단계를 사용하여이 기능을 에뮬레이션 할 수 있습니다.

1) 새 임시 테이블을 만듭니다.

CREATE TEMPORARY TABLE temporary_table LIKE target_table;

2) 선택적으로 임시 테이블에서 모든 인덱스를 삭제하여 속도를 높입니다.

SHOW INDEX FROM temporary_table;
DROP INDEX `PRIMARY` ON temporary_table;
DROP INDEX `some_other_index` ON temporary_table;

3) 임시 테이블에 CSV로드

LOAD DATA INFILE 'your_file.csv'
INTO TABLE temporary_table
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
(field1, field2);

4) ON DUPLICATE KEY UPDATE를 사용하여 데이터 복사

SHOW COLUMNS FROM target_table;
INSERT INTO target_table
SELECT * FROM temporary_table
ON DUPLICATE KEY UPDATE field1 = VALUES(field1), field2 = VALUES(field2);

5) 임시 테이블 제거

DROP TEMPORARY TABLE temporary_table;

SHOW INDEX FROM SHOW COLUMNS FROM 을 사용하면 주어진 테이블에 대해이 프로세스를 자동화 할 수 있습니다.

 

참조 페이지 https://stackoverflow.com/questions/15271202

 

 

반응형

댓글