방대한 양의 데이터를 MySQL에로드하려면 LOAD DATA INFILE이 가장 빠른 옵션입니다. 불행히도 INSERT IGNORE 또는 REPLACE가 작동하는 방식으로 사용할 수있는 반면, ON DUPLICATE KEY UPDATE는 현재 지원되지 않습니다.중복 된 키 업데이트가있는 MySQL LOAD DATA INFILE
그러나 ON DUPLICATE KEY UPDATE
은 REPLACE
이상의 이점이 있습니다. 후자는 중복이 존재할 때 삭제 및 삽입을 수행합니다. 이로 인해 키 관리에 오버 헤드가 발생합니다. 또한 자동 증가 ID는 대체시 동일하게 유지되지 않습니다.
LOAD DATA INFILE을 사용할 때 ON DUPLICATE KEY UPDATE
을 어떻게 에뮬레이트 할 수 있습니까?
1) 새로운 임시 테이블을 만듭니다
주 테이블에 *가 포함되어 기본 키가 포함되어 있고 (기본 키가 auto_increment 인 경우 기본 키가 auto_increment 인 항목이 업데이트되기 때문에) 대신에 INSERT INTO target_table SELECT coloumn_name1, coloumn_name1 FROM temporary_table을 사용하는 것이 좋습니다 , 그렇지 않으면 이것은 나를 위해 일했습니다! – JonoCoetzee
답변을 주셔서 감사합니다, 약간의 SQL 저글링 후 나를 위해 일했습니다. 나의 SQL-fu는 매우 녹슬고, 이런 깔끔한 기술을 배우기에 좋다.여기 너무에서 – Chubas
감사합니다 - 훌륭하게 작동은 - LOAD 데이터 INFILE와 ON 중복 키를 할 수 생각하지, 그래서 이전에 시도하지 않았다. – Shaun