php连接到diff服务器上的两个数据库并使用insert select

时间:2016-02-21 08:42:34

标签: php mysql

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

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

db1在亚马逊网络服务关系数据库上,而db2在本地主机上(wamp)我如何制作一个可以容纳两个这样的数据库的PHP脚本,这将允许我执行这样的查询。此脚本将在本地主机上执行 谢谢..

3 个答案:

答案 0 :(得分:2)

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

伪代码中的

$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);
}

请注意,这是伪代码,并且无法复制和粘贴,但为您提供了您需要做的事情的要点。

答案 1 :(得分:0)

您有3个选项:

  1. 如果您可以通过vpn网络或ssh连接连接2台服务器,以便2台服务器可以直接看到对方,那么您可以使用federated table engine
  2.   

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

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

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

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

答案 2 :(得分:-1)

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

这对你有用