繁体   English   中英

PDO将行从一个数据库移动到另一个数据库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM