INSERT … ON DUPLICATE가있는 mysqldump (데이터가 변경 될 수 있음)을 실행하고

한 데이터베이스에서 다른 데이터베이스로 데이터를 병합하고 싶습니다. 따라서 with with dump를 작성한 mysqldump다음 동일한 테이블 구조를 가진 다른 데이터베이스로 가져옵니다. 이 경우 문제가 없습니다 (예 : 중복 항목 또는 다른 것).

그러나 테스트 목적으로 일부 병합을 수행하고 나중에 최종 병합을 수행합니다. 그래서 몇 번 병합 (데이터가 변경 될 수 있음)을 실행하고 싶습니다. 테이블의 행은 삭제되지 않으며 삽입 또는 업데이트 만 가능합니다.

ON DUPLICATE 옵션으로 mysqldump를 만들 수 있습니까? 아니면 새 데이터를 삽입하고 수정 된 데이터를 업데이트하는 덤프를 병합 할 수 있습니까?

물론 ON DUPLICATE덤프에 수동으로 삽입 할 수는 있지만 병합 프로세스를 자동화하고 싶습니다.



답변

이에 도움이되는 옵션이 있습니다.

  --insert-ignore     Insert rows with INSERT IGNORE.
  --replace           Use REPLACE INTO instead of INSERT INTO.
  -t, --no-create-info
                      Don't write table creation info.

이 패러다임을 명심하십시오

  • DB1에서 DUMP1로 mysqldump
  • DUMP1을 DB3에로드
  • –replace (또는 –insert-ignore) 및 –no-create-info를 사용하여 DB2에서 모든 것을 mysqldump
  • DUMP2를 DB3에로드