我们如何使用php脚本将mysqldump转换为另一个数据库,以便触发器不会随之被转储?

时间:2010-05-04 11:39:11

标签: php mysql mysqldump

我们如何使用php脚本将mysqldump发送到另一个数据库,这样触发器就不会被转储?

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效:

$db_name = "db";
$outputfile = "/somewhere";
$new_db_name = 'newdb';

$cmd = 'mysqldump --skip-triggers %s > %s  2>&1';
$cmd = sprintf($cmd, escapeshellarg($db_name), escapeshellcmd($output_file));
exec($cmd, $output, $ret); 
if ($ret !=0 ) {
    //log error message in $output
}

然后导入:

$cmd = 'mysql --database=%s < %s 2>&1';
$cmd = sprintf($cmd, escapeshellarg($new_db_name), escapeshellcmd($output_file));
exec($cmd, $output, $ret); 
//etc.

unlink($outputfile);

请注意,需要先创建新数据库。您可能还需要为每个命令指定用户名和密码。

修改

您也可以在一个命令中执行此操作,例如

exec('mysqldump --skip-triggers sourcedb | mysql --database targetdb 2>&1', $output, $return);