[英]PDO Move row from one database to another
我有2个具有相同结构的独立数据库。 我想将一组选定的行从一个表移动到另一个表。 我使用PDO选择所有行,然后在while循环中,我假设可以将每一行插入新表中,然后从旧表中删除它。
对于普通的mysql,这是一个非常简单的任务,但是我想使用名称空间,以便可以轻松地修改表结构等。 我有以下工作,但不会将条目移动到新表中:
try {
$sql = "SELECT * FROM `calls` WHERE `calls`.`status`=0 AND `calls`.`stage` < 4 AND `calls`.`answer` < (NOW() - INTERVAL 10 MINUTE)";
$query = $this->staging->query($sql);
while($row = $query->fetch(PDO::FETCH_ASSOC)) {
$sql = "INSERT INTO `table` (`field1`,`field2`) VALUES (?,?)";
$query = $this->production->prepare($sql);
$query->execute($array);
}
}
catch(PDOException $e) {
$this->informer("FATAL", "Unable to process broken IVR surveys. Error: ".$e->getMessage());
}
您可以在短时间内完成:
INSERT INTO db1.table (fields) SELECT fields FROM db2.table
当然,两个数据库必须位于同一台计算机上
这可能不起作用,因为您在准备好的语句中使用了问号占位符样式,但正在将命名数组传递给execute
。
如果改用参数命名,它应该可以工作:
$sql = "INSERT INTO `table` (`field1`,`field2`) VALUES (:field1, :field2)";
另一种方法是在MySQL中使用联合表执行您要尝试执行的操作。 有一些限制...。但是这里有一些文档可以帮助您...
http://dev.mysql.com/doc/refman/5.0/en/federated-use.html http://dev.mysql.com/doc/refman/5.0/en/federated-limitations.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.