반응형
그러나 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
반응형
'MySql' 카테고리의 다른 글
MySQL MySqlDataAdapter를 사용한 업데이트가 작동하지 않습니다. (0) | 2021.01.09 |
---|---|
MySQL 하위 쿼리가있는 SELECT 쿼리의 IF 및 CASE 문 (0) | 2021.01.09 |
MySQL MySql 연결 및 따옴표 (0) | 2021.01.09 |
MySQL mysqli_insert_id ()가 항상 0을 반환하는 이유는 무엇입니까? (0) | 2021.01.09 |
MySQL 조인 된 테이블이있는 행 수 선택 (0) | 2021.01.09 |
댓글