두 MySQL 테이블을 병합하려면 어떻게 해야 합니까?
구조가 같은 2개의 MySQL 테이블을 Marge하려면 어떻게 해야 합니까?
두 테이블의 프라이머리 키가 충돌하기 때문에 그것을 고려했습니다.
다음의 조작도 가능합니다.
INSERT IGNORE
INTO table_1
SELECT *
FROM table_2
;
이를 통해 table_1의 행이 일치하는 기본 키가 있는 table_2의 행보다 우선하고 새 기본 키가 있는 행을 삽입할 수 있습니다.
또,
REPLACE
INTO table_1
SELECT *
FROM table_2
;
는 table_1에 이미 있는 행을 table_2의 대응하는 행으로 갱신하고 새로운 프라이머리 키가 있는 행을 삽입합니다.
프라이머리 키의 의미에 따라 달라집니다.자동 인크리먼트의 경우는, 다음과 같이 합니다.
insert into table1 (all columns except pk)
select all_columns_except_pk
from table2;
PK가 의미 있는 경우 우선 순위를 가져야 하는 레코드를 결정하는 방법을 찾아야 합니다.먼저 중복 항목을 찾기 위한 선택 쿼리를 만들 수 있습니다(cpitis에 의한 답변 참조).그런 다음 보관하지 않을 레코드를 제거하고 위의 삽입을 사용하여 남아 있는 레코드를 추가하십시오.
INSERT
INTO first_table f
SELECT *
FROM second_table s
ON DUPLICATE KEY
UPDATE
s.column1 = DO_WHAT_EVER_MUST_BE_DONE_ON_KEY_CLASH(f.column1)
수동으로 수행해야 하는 경우 한 번만:
먼저 다음과 같은 임시 테이블에서 병합합니다.
create table MERGED as select * from table 1 UNION select * from table 2
다음으로 주요 제약사항을 특정합니다.
SELECT COUNT(*), PK from MERGED GROUP BY PK HAVING COUNT(*) > 1
여기서 PK는 기본 키 필드입니다...
중복을 해결합니다.
테이블의 이름을 변경합니다.
[편집 - UNION 쿼리에서 괄호를 삭제하여 아래 코멘트에 오류가 발생하였습니다]
들리는 것만큼 복잡하지 않아...중복된 기본 키는 쿼리에서 제외합니다.이건 나한테 효과가 있어!
INSERT INTO
Content(
`status`,
content_category,
content_type,
content_id,
user_id,
title,
description,
content_file,
content_url,
tags,
create_date,
edit_date,
runs
)
SELECT `status`,
content_category,
content_type,
content_id,
user_id,
title,
description,
content_file,
content_url,
tags,
create_date,
edit_date,
runs
FROM
Content_Images
FK를 업데이트하기 위한 스크립트를 작성할 수 있습니다.다음 블로그를 확인해 주세요.http://multunus.com/2011/03/how-to-easily-merge-two-identical-mysql-databases/
이들은 information_schema 테이블을 사용하여 "id" 열을 가져오는 현명한 스크립트를 가지고 있습니다.
SET @db:='id_new';
select @max_id:=max(AUTO_INCREMENT) from information_schema.tables;
select concat('update ',table_name,' set ', column_name,' = ',column_name,'+',@max_id,' ; ') from information_schema.columns where table_schema=@db and column_name like '%id' into outfile 'update_ids.sql';
use id_new
source update_ids.sql;
언급URL : https://stackoverflow.com/questions/725556/how-can-i-merge-two-mysql-tables
'itsource' 카테고리의 다른 글
도커 컨테이너 내의 mariadb grant 테이블:hostname 및 ip (0) | 2022.09.27 |
---|---|
Python의 수업은 언제 사용해야 하나요? (0) | 2022.09.27 |
대형 판다 데이터 프레임에 모든 기둥의 이름을 표시하는 방법은 무엇입니까? (0) | 2022.09.27 |
Java에서 인쇄할 수 없는 Unicode 문자를 대체하려면 어떻게 해야 합니까? (0) | 2022.09.27 |
이진 로깅 옵션이 켜져 있을 때 SUPER 권한이 해제되는 이유는 무엇입니까? (0) | 2022.09.27 |