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
마지막으로, 원하는대로 정확한 클론 테이블을 갖게됩니다.