繁体   English   中英

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

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

嗨,我需要一些帮助,我想做的就是在数据库位于diff服务器上的情况下使用insert select语句。

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

db1在亚马逊网络服务关系数据库上,而db2在本地主机(沼泽)上,我如何制作一个可以容纳两个这样的数据库的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连接连接两台服务器,以便两台服务器可以直接看到对方,则可以使用联合表引擎

FEDERATED存储引擎使您无需使用复制或群集技术即可从远程MySQL数据库访问数据。 查询本地FEDERATED表会自动从远程(联合)表中提取数据。 没有数据存储在本地表上。

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

  1. 同样,您必须启用两台服务器之间的直接连接,并在两台服务器之间设置复制 ,必须确保将localhost上可用的数据复制到Amazon服务器上。 该查询将在亚马逊服务器上运行,并将查询复制的数据。

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

如果您的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;";

这将为您工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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