PHP 连接到差异服务器上的两个数据库并使用插入选择


php connecting to two databases on diff servers and using insert select

嗨,我需要一些帮助,我正在尝试做的是在数据库位于差异服务器上时使用这样的插入选择语句。

insert into db1.copy2 (c1,c2) select c1,c2 from db2.copy2;

db1 在亚马逊云科技关系数据库上,db2 在本地主机上 (wamp) 我怎样才能制作一个可以容纳两个这样的数据库的 PHP 脚本,这将允许我执行这样的查询。 此脚本将在本地主机上执行谢谢。。

有许多软件用于在数据库服务器之间同步或复制数据,也许您应该使用其中之一。 否则,您只需分两步完成

在伪代码中

$sql = "select c1,c2 from db2.copy2";
$Results = pdofetchall($sql);
foreach ($Results as $row){
  $c1 = $row['c1'];
  $c2 = $row['c2'];
  $InsertSQL = "insert into db1.copy2 VALUES($c1,$c2)  ";
  executesql($InsertSQL);
}

请注意,这是伪代码,绝对无法复制和粘贴,但为您提供需要执行的操作的要点。

您有 3 个选项:

  1. 如果可以通过 vpn 网络或 ssh 连接连接 2 台服务器,让 2 台服务器可以直接看到对方,那么可以使用联合表引擎:

联合存储引擎允许您从远程 MySQL 访问数据 不使用复制或群集技术的数据库。查询 本地联合表自动从远程提取数据 (联合)表。本地表上不存储任何数据。

此解决方案将启用您在问题中使用的语法。

    同样,您必须在 2 台服务器之间
  1. 启用直接连接,并在 2 台服务器之间设置复制,确保将本地主机上可用的数据复制到 Amazon 服务器。查询将在 Amazon 服务器上运行,并将查询复制的数据。

  2. 您可以通过直接连接到两个实例或在本地服务器上设置基于 Web 的 API 来合并来自 2 个数据源的 php 中的数据,该 API 可用于将数据从本地服务器传输到 Amazon。

如果在同一台服务器上的 2 个数据库,您只需连接到一个数据库并轻松传递查询即可,则可以轻松执行此操作:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 
$sql = "insert into db1.copy2 (c1,c2) select c1,c2 from db2.copy2;";

这将为你工作