php - 如何将表从远程服务器上的一个表复制到另一个远程数据库上的表?

标签 php mysql sql database pdo

我在 2 个不同的服务器上有匹配的数据库(mysql 复制不是一个选项)。 我需要查看一个 table2 中是否缺少一条记录,如果是,则截断 table2,然后从 table1 复制到 table2。 每个表都在不同的 IP/服务器上。

代码:

            $pdoyd = new PDO(
                    'mysql:host=' . DB_HOST_YODA . ';dbname=' . DB_DATABASE_DNS,
                     DB_USER_DNS,
                     DB_PASSWORD
            );
            $pdoyd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $pdoyd->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
            $truntbl = array('cryptokeys', 'domains', 'records');
            foreach($truntbl as $tbl){
                    $sql = 'truncate '.$tbl;
                    $statementyd = $pdoyd->prepare($sql);
                    $useryd = $statementyd->execute();
                    var_dump($statementyd);
                    echo '<br>';
            }

将丢失的记录从一台服务器上的一个表复制到另一台服务器上的另一个表的有效方法是什么?

最佳答案

您可以打开两个连接。使用一个从源服务器读取,另外两个插入目标服务器。使用 ON DUPLICATE KEY IGNORE 选项来防止在您尝试覆盖现有行时出现错误,因此它只会插入缺失的行。

$pdo1 = new PDO('mysql:host=server1;dbname=xxx', $username1, $password1);
$pdo2 = new PDO('mysql:host=servrer2; dbname=xxx', $username2, $password2);

$insert_stmt = $pdo2->prepare("INSERT INTO yourTable (col1, col2, col3, ...) VALUES (:col1, :col2, :col3, ...) ON DUPLICATE KEY IGNORE");
$select_results = $pdo1->query("SELECT * FROM yourTable");
while ($row = $select_results->fetch(PDO::FETCH_ASSOC)) {
    $insert_stmt->execute($row);
}

关于php - 如何将表从远程服务器上的一个表复制到另一个远程数据库上的表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34832260/

相关文章:

php - 从多个用户获取行并按日期排序显示它们

php - 当我刚刚建表时,MySQL 返回了一个空结果集

html - HTML 行结果的 XSL 替代背景颜色基于 SQL 查询填充的节点元素的变化值

mysql - 字符串.切片!产生奇怪的结果

javascript - 修改PHP使用JS/JQuery与MySQL通信

mysql - 从 information_schema 获取所有表,MySQL

php - 当用户使用 Laravel 成功登录时,如何更新上次登录列?

php - php 中的 SQL 查询并查看安全数据

javascript - 如何对同一个 ajax 同时使用 on() 和 delegate() ?

mysql - 来自多个 LEFT JOIN 的巨大结果集的替代方案