Database Kopyalama (Database Clone)
Konsoldan bir database’i kopyalamak için;
mysqldump -u root -p dbname > db_name.sql
mysqladmin create dbname -u DB_user --p
mysql -u root -p < db_name.sql
Bunu PHP üzerinden yapmak isterseniz aşağıdaki gibi bir sscript kullanabilirsiniz:
Örnekde Mysql connection için Zend_DB kullanılmıştır ve user olarak root olarak kullanılmıştır.
Aksi halde yeni db'yi yarattıktan sonra bir user yaratıp hak verip onunla bağlanmak gerekir.
function cloneDB($database, $newdbname) {
$tables = $this->_dbs->fetchAll("SELECT * FROM information_schema.tables WHERE table_schema = '$database'");
$this->createDB($newdbname);
foreach ($tables as $row) {
$this->_dbs->query("create table {$newdbname}.{$row['TABLE_NAME']} like {$database}.{$row['TABLE_NAME']}");
$this->_dbs->query("insert into {$newdbname}.{$row['TABLE_NAME']} select * from {$database}.{$row['TABLE_NAME']}");
}
}
function createDB($dbname) {
//CREATE DATABASE IF NOT EXISTS DBName;
$existdb = $this->_db->fetchOne("SELECT count(*) FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME=?", $dbname);
if (!$existdb) {
$this->_db->query("create database `".$dbname. "` DEFAULT CHARACTER SET utf8 COLLATE utf8_turkish_ci");
}
}
Recent Comments