MySQLi-테이블 복제

테이블의 정확한 복사본이 필요하고 CREATE TABLE ... SELECT가 동일한 인덱스, 기본값 등을 포함해야하기 때문에 사용자의 목적에 적합하지 않은 상황이있을 수 있습니다.

다음 단계에 따라이 상황을 처리 할 수 ​​있습니다.

  • SHOW CREATE TABLE을 사용하여 소스 테이블의 구조, 인덱스 및 모두를 지정하는 CREATE TABLE 문을 가져옵니다.

  • 문을 수정하여 테이블 이름을 복제 테이블의 이름으로 변경하고 문을 실행합니다. 이렇게하면 정확한 복제 테이블을 갖게됩니다.

  • 선택적으로 테이블 내용도 복사해야하는 경우 INSERT INTO ... SELECT 문도 실행하십시오.

다음 예제를 사용하여 복제 테이블을 만듭니다. tutorials_inf.

1 단계

테이블에 대한 완전한 구조를 얻으십시오.

mysql> SHOW CREATE TABLE tutorials_inf \G;
*************************** 1. row ***************************
       Table: tutorials_inf
Create Table: CREATE TABLE `tutorials_inf` (
   `id` int(11) NOT NULL,
   `name` varchar(20) NOT NULL,
   PRIMARY KEY (`id`),
   UNIQUE KEY `AUTHOR_INDEX` (`name`),
   UNIQUE KEY `NAME_INDEX` (`name`),
   KEY `id` (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = latin1
1 row in set (0.05 sec)

ERROR: No query specified

2 단계

이 테이블의 이름을 바꾸고 다른 테이블을 만듭니다.

mysql> CREATE TABLE tutorials_clone(
   -> id int(11) NOT NULL,
   -> name varchar(20) NOT NULL,
   -> PRIMARY KEY (id),
   > UNIQUE KEY AUTHOR_INDEX (name),
   -> UNIQUE KEY NAME_INDEX (name),
   ->  KEY id (id));
Query OK, 0 rows affected (1.80 sec)

3 단계

2 단계를 실행 한 후 데이터베이스에 복제 테이블을 생성합니다. 이전 테이블에서 데이터를 복사하려면 INSERT INTO ... SELECT 문을 사용하면됩니다.

mysql> INSERT INTO tutorials_clone(id,name) SELECT id,name from tutorials_inf;
Query OK, 4 rows affected (0.19 sec)
Records: 4  Duplicates: 0  Warnings: 0

마지막으로, 원하는대로 정확한 클론 테이블을 갖게됩니다.