从两个不同的PostgreSQL数据库同步两个表

时间:2011-05-31 14:18:44

标签: php postgresql

我有来自两个不同数据库的两个表,我想要一个php函数来同步数据,因此表号2总是可以验证表1上的内容并更新它的信息。 任何人都有一个如何做到这一点的例子?提前谢谢。

3 个答案:

答案 0 :(得分:3)

D.S.的答案将完成工作。

您还可以考虑设置插入/更新后触发器并使用dblink。这样,它们将保持同步,而无需您在PHP中担心它。

作为旁注,请注意在任何一种情况下DB错误可能发生的情况。发生数据库错误时,最终可能会失去与任一解决方案的同步,因为事务将是自治的。

答案 1 :(得分:0)

此示例将连接到两个数据库,并且对于每个第一个db的作者将使用相同的ID更新目标db的作者。 当然,您必须在执行和更新之前设置任何必要的检查,搜索和其他详细信息(或者如果您愿意,可以插入或替换),但这完全取决于您将要执行的操作:)

<?php

if (false !== ($con1 = pg_connect("your source connection string"))) {
  if (false !== ($con2 = pg_connect("your dest connection string"))) {
    if (false !== ($result = pg_query($con1, "SELECT id, author, email FROM authors"))) {
      while (false !== ($row = pg_fetch_assoc($result))) {
        pg_query($con2, "UPDATE authors SET email=".pg_escape_string($con2, $row['email']).
          'WHERE id='.pg_escape_string($con2, $row['id']));
      }
      pg_free_result($result);
    }
    pg_close($con2);
  }
  pg_close($con1);
}

?>

我希望它很有用。请随时询问有关它的任何问题。请享用! :)

答案 2 :(得分:0)

在插入,更新,删除时创建触发器。当触发过程调用将操作中完成的所有更改(Insertupdatedelete)存储到数据库表中时(让我们调用此sync_table)。运行一些脚本,将数据从sync_table复制到另一个数据库表。 sync_table将存储修改,插入和删除的数据。