2011-01-12 6 views
0

두 테이블에 각각 50000 개의 데이터가 있습니다. 두 테이블의 ID가 1에서 시작 - 50000 그래서 그것을 완전히 기존의 재 작성두 테이블을 병합하는 방법은 무엇입니까?

INSERT IGNORE 
    INTO table_1 
SELECT * 
    FROM table_2 

를 사용하여 table_2에서 된 table_1에 삽입하려고 할 때. 나는 그것을 다시 쓰고 싶지 않지만 100k를 totallying 할 것이므로 새로 추가하고 싶다. 색인 열에 5 ~ 10 개의 중복이 있다고해도 색인에 중복 확인이 가능합니다. 내가 어떻게 이럴 수 있니?

된 table_1 및 table_2이

발생하는 성공적인 병합에 우선 다른 키를해야하는 경우

답변

0

사용 PHP 또는 다른 좋아하는 언어가,이 코드의 약 10 ~ 20 라인 ...

+0

이것은 질문에 대한 대답이 아니므로 주석 섹션에 나와 있어야합니다. 또한 그의 설정을 모르므로 PHP와 관련이 없습니다. Python 응용 프로그램 등이 될 수 있습니다. –

+0

그 이유는 "또는 다른 좋아하는 언어" – Tobias

0

될 것입니다 된 table_1 키는 1-50000에서 시작해야하고 table_2 키 값은 MySQL의에서 업데이트 기능에를 사용하여 처리 할 수 ​​복제를 들어 50001-100000

에서 시작해야합니다

INSERT INTO table_1 
    SELECT * FROM table_2 
ON DUPLICATE KEY UPDATE table_1.val=table_1.val 
0

기본 키 열이있는 경우 거기에 중복 키가 있으면 삽입에서 제외해야합니다.

하나의 솔루션은 중복 값을 제거하는 select와 함께 삽입하는 것입니다.

INSERT IGNORE INTO table_1 (f1, f2, f3) 
SELECT f1, f2, f2 FROM table_2 WHERE table_2.index NOT IN (SELECT index FROM table_1) 

OBS의 경우 느린 데이터베이스 서버에서는 그리 효율적이지 않으며 테이블에 대한 자세한 정보로 더 잘 작성 될 수 있습니다.

관련 문제