테이블 복사, 데이터 복사 모두 SELECT를 통하여 데이터를 조회한 후에 복사를 진행합 니다. 따라서 복사를 진행할 때 WHERE 조건을 추가하여 필터링된 데이터만 복사할 수 도 있습니다. 이는 테이블의 전체 데이터를 복사하는 것이 아니라 필요한 부분만 처리하여 복사할 수 있습니다.
| 쿼리 문법 |
INSERT INTO 기본테이블 (컬럼명) SELECT (컬럼명) FROM 복사_테이블 WHERE 조건;
15.5.1 PHP 코드
PHP 코드를 통하여 조건 설정된 데이터만 출력하여 데이터를 복사해 보도록 합니다.
| PHP 예제 | mysql.class.php 파일에 메서드 예제를 추가합니다.
// select 데이터를 테이블로 복사합니다.
public function insertSelectWhere($src, $dst, $where, $fields)
{
if ($src) {
if ($fields) {
$queryString = "insert into $dst ($fields) select $fields from $src where $where";
} else {
$queryString = "insert into $dst select * from $src where $where";
}
// 쿼리를 전송합니다.
if (mysqli_query($this->dbcon, $queryString)=== TRUE) {
$this->msgEcho("쿼리성공] ".$queryString);
$this->msgEcho(" 데이터 복사!");
// 객체 반환, 매서드체인
return $this;
} else {
$this->msgEcho("Error] ".$queryString);
}
} else {
$this->msgEcho("Error] 원본 테이블명을 적어주세요.");
}
}
예제 파일 | copy-05.php
<?php
include "dbinfo.php";
include "mysql.class.php";
// ++ Mysqli DB 연결.
$db = new JinyMysql();
// 테이블을 복사합니다.
$db->insertSelectWhere("members", "members1","Id=1","FirstName, LastName, email");
?>
화면 출력
mysql connected!
쿼리성공] insert into members1 (FirstName, LastName, email) select FirstName, LastName, email from members where Id=1
데이터 복사!