[SQL] 어떻게 두 MySQL의 테이블을 병합 할 수 있습니다?
SQL어떻게 두 MySQL의 테이블을 병합 할 수 있습니다?
어떻게 동일한 구조를 가진 두 개의 MySQL의 테이블을 병합 할 수 있습니다?
나는이 점을 고려해야합니다 그래서 두 테이블의 기본 키가 충돌합니다.
해결법
-
==============================
1.당신은 또한 시도 할 수 있습니다 :
당신은 또한 시도 할 수 있습니다 :
INSERT IGNORE INTO table_1 SELECT * FROM table_2 ;
이는 여전히 새로운 기본 키로 행을 삽입 할 때, 일치하는 기본 키가 그 table_2 사람들을 대체하도록 된 table_1 이들 행을 허용한다.
또한,
REPLACE INTO table_1 SELECT * FROM table_2 ;
새로운 기본 키로 행을 삽입하는 동안, 이미 table_2의 해당 행으로 된 table_1 이들 행을 업데이트한다.
-
==============================
2.그것은 기본 키의 의미에 따라 달라집니다. 그냥 자동 증가가 있다면, 다음과 같은 것을 사용 :
그것은 기본 키의 의미에 따라 달라집니다. 그냥 자동 증가가 있다면, 다음과 같은 것을 사용 :
insert into table1 (all columns except pk) select all_columns_except_pk from table2;
PK 뭔가를 의미하는 경우 우선 순위가되어야하는 기록을 확인할 수있는 방법을 찾을 필요가있다. 당신은 (cpitis 의해 답변을 참조) 최초의 중복을 찾을 수있는 선택 쿼리를 만들 수 있습니다. 그럼 당신은 유지하고 남아있는 레코드를 추가하려면 위의 인서트를 사용하지 않는 사람을 제거 할 수 있습니다.
-
==============================
3.
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)
-
==============================
4.수동으로 수행해야하는 경우, 한 시간 :
수동으로 수행해야하는 경우, 한 시간 :
첫째, 같은과 임시 테이블에 병합 :
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 쿼리에]
-
==============================
5.그것은 소리가 나는 것처럼 복잡하지 .... 그냥 .... 쿼리의 중복 기본 키를 남겨 이 나를 위해 작동합니다!
그것은 소리가 나는 것처럼 복잡하지 .... 그냥 .... 쿼리의 중복 기본 키를 남겨 이 나를 위해 작동합니다!
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
-
==============================
6.당신은 .. 당신을 위해 FK의를 업데이트하는 스크립트를 작성이 블로그 확인할 수 : http://multunus.com/2011/03/how-to-easily-merge-two-identical-mysql-databases/를
당신은 .. 당신을 위해 FK의를 업데이트하는 스크립트를 작성이 블로그 확인할 수 : http://multunus.com/2011/03/how-to-easily-merge-two-identical-mysql-databases/를
그들은 "ID"열을 얻기 위해 INFORMATION_SCHEMA 테이블을 사용하는 영리한 스크립트가 :
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;
from https://stackoverflow.com/questions/725556/how-can-i-merge-two-mysql-tables by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 대부분의 효율적인 T-SQL 패드 방식으로 일정한 길이로 왼쪽에 VARCHAR? (0) | 2020.03.21 |
---|---|
[SQL] 어떻게 PostgreSQL의에서 ON 충돌로 RETURNING 사용 하는가? (0) | 2020.03.21 |
[SQL] 어떻게 아포스트로피 (작은 따옴표)를 포함하는 값을 삽입하려면? (0) | 2020.03.21 |
[SQL] 어떻게 SQL 서버 XML 열에서 값을 조회 할 수 있습니다 (0) | 2020.03.21 |
[SQL] SELF 무엇을 가입하고 당신이 그것을 할 때를 사용해야합니까? [복제] (0) | 2020.03.21 |