使用PHP进行MySQL数据库克隆

时间:2014-09-17 07:39:28

标签: php mysql mysqldump

我有一个名为 yourFirstDatabase 的数据库,只有几个表。我想将其克隆到另一个数据库 yourSecondDatabase 以及整个数据。

现在我有以下代码:

exec('mysqldump --user=root --password=root --host=localhost yourFirstDatabase > /var/www/dileep/jiteen/poc/shellPhp/file.sql');

这会创建 yourFirstDatabase 的转储(名为 file.sql )。现在我想将 file.sql 中的数据库元素提取到 yourSecondDatabase 中 为此,我使用了类似的代码:

exec('mysqldump --user=root --password=root --host=localhost yourSecondDatabase < /var/www/dileep/jiteen/poc/shellPhp/file.sql');

但它没有正常工作,并且 yourSecondDatabase 中没有导入任何数据。

但是,如果我手动从 file.sql 导入数据,则数据导入完全正常。这意味着MySQL转储(第一个代码)很好,但第二个代码(获取数据)存在一些问题。

PS:它没有显示任何错误。我从类似的问题中获得了这些代码FROM HERE 任何形式的帮助或建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

使用命令mysql代替mysqldump。后者仅用于生产垃圾场,而不是进口垃圾场。

exec('mysql --user=root --password=root --host=localhost --database=yourSecondDatabase < /var/www/dileep/jiteen/poc/shellPhp/file.sql');

答案 1 :(得分:0)

这是我想出的使用PHP和MySQLi复制数据库的方法:

// Database variables

$DB_HOST = 'localhost';
$DB_USER = 'root';
$DB_PASS = '1234';

$DB_SRC = 'existing_db';
$DB_DST = 'newly_created_db';



// MYSQL Connect

$mysqli = new mysqli( $DB_HOST, $DB_USER, $DB_PASS ) or die( $mysqli->error );



// Create destination database

$mysqli->query( "CREATE DATABASE $DB_DST" ) or die( $mysqli->error );



// Iterate through tables of source database

$tables = $mysqli->query( "SHOW TABLES FROM $DB_SRC" ) or die( $mysqli->error );

while( $table = $tables->fetch_array() ): $TABLE = $table[0];


    // Copy table and contents in destination database

    $mysqli->query( "CREATE TABLE $DB_DST.$TABLE LIKE $DB_SRC.$TABLE" ) or die( $mysqli->error );
    $mysqli->query( "INSERT INTO $DB_DST.$TABLE SELECT * FROM $DB_SRC.$TABLE" ) or die( $mysqli->error );


endwhile;