【问题标题】:php PDO transfer resultset to database [duplicate]php PDO将结果集传输到数据库[重复]
【发布时间】:2017-05-28 20:58:26
【问题描述】:

我尝试将大量数据(每隔几分钟大约 20 万条记录)从一个数据库传输到另一个数据库(也在两台不同的服务器上)。两个表上的tableschema都是dbs是一样的。

那么在不导致内存限制错误的情况下,将巨大的结果集传输到数据库中的最佳方法是什么。

我当前的解决方案如下所示。但这意味着我在 writeToDB2() 中运行了大约 200k 插入查询,这对我来说似乎不是很有效。

$stmt = $this->db_1->query("SELECT foo from bar");
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    writeToDB2($row);
}

有人知道批量传输数据的更好解决方案吗?

【问题讨论】:

  • 复制?虽然有自己的缺点

标签: php mysql pdo bulkinsert


【解决方案1】:

幸运的是 mysql 支持跨数据库的 INSERT SELECT。

$stmt = $this->db_1->query("INSERT INTO db2.bar(foo) SELECT foo from db1.bar");
$stmt->execute();

【讨论】:

  • 将是一个很好的解决方案,但不幸的是那些数据库不在同一台服务器上运行。所以我有两个 db-handels
  • 那么你唯一的选择就是复制。
【解决方案2】:

仅当同一用户有权访问两个数据库时,其他答案才有效。

一个通用的解决方案是完全忘记 PHP 和 PDO,并使用控制台 mysql shell 和 mysqldump 之类的

mysqldump -uuser1 -ppassword1 db1 tablename | mysql -uuser2 -ppassword2 db2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 2012-11-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多