한 데이터베이스에서 포함 된 테이블을 복사하여 다른 데이터베이스 테이블에 삽입하고 싶습니다.


96

테이블의 스키마와 해당 테이블 내의 데이터를 라이브 서버의 다른 데이터베이스에있는 다른 데이터베이스 테이블로 복사하고 싶습니다. 어떻게 할 수 있습니까?


두 개의 데이터베이스 연결을 사용하고 하나에서 테이블 구조를 읽고 다른 쿼리를 실행합니다
Dau

이 데이터베이스는 별도의 mysql 인스턴스에 있습니까, 아니면 동일한 인스턴스입니까? 연속 프로세스 인 경우 복제를 사용하여 다른 인스턴스를 설정할 수 있습니다.
Nick

@Nick 내 데이터베이스는 다른 mysql 인스턴스에 있습니다. 복사하는 방법을 설명해 주시겠습니까?
johk95

답변:


218

한 데이터베이스에서 다른 데이터베이스로 테이블을 복사하려면 다음과 같이하면됩니다.

CREATE TABLE db2.table LIKE db1.table;
INSERT INTO db2.table SELECT * FROM db1.table;

2
테이블에 외래 키 제약 조건이없는 경우 훌륭한 솔루션입니다. 저는 이것을 하나의 테이블 대신 전체 데이터베이스의 복사본을 만드는 데 사용했습니다. 이를 위해 mysqldump 명령을 사용하는 것이 좋습니다.
thorne51

MySQL은 이제 개별 파일에 테이블 데이터를 저장할 수 있습니다 (그리고 frm 파일은 테이블 당 너무 많습니다). 이 접근 방식은 의심 할 여지가 없지만 거대한 데이터베이스에서는 속도가 느립니다. 다른 방법이 있습니까?
알렉스 Kovshovik

1
이것은 데이터베이스가 동일한 서버에있는 경우에만 작동합니다.
zgr024

10

또는 MySQL 5에서 CREATE TABLE db2.table SELECT * FROM db1.table


4
이것은 색인과 같은 것을 복사하지 않습니다. 단지 튜플 세트를 기반으로 테이블을 생성합니다. 당신은 아마 이것을하고 싶지 않을 것입니다.
BenMQ 2014 년

그래,이 쿼리는 복사 indexe하지 않습니다
XxXk5XxX

4

BASH에서는 다음을 수행 할 수 있습니다.

mysqldump database_1 table | mysql database_2


2

구조를 복사하려면 다음을 사용하십시오.

CREATE TABLE Db_Name.table1 LIKE DbName.table2;

Ps> 스키마 및 데이터를 복사하지 않습니다.



0

명령 줄에서 :

mysqldump -h localhost -u username -ppassword [SCHEMA] --tables [TABLE] | mysql -h otherhost -u username -ppassword [SCHEMA2]

이것은 localhost의 SCHEMA 내부 테이블을 otherhost의 SCHEMA2로 복사합니다.

localhost 및 otherhost는 호스트 이름 일 뿐이며 같거나 다를 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.