[英]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种选择:
FEDERATED存储引擎使您无需使用复制或群集技术即可从远程MySQL数据库访问数据。 查询本地FEDERATED表会自动从远程(联合)表中提取数据。 没有数据存储在本地表上。
此解决方案将启用您在问题中使用的语法。
同样,您必须启用两台服务器之间的直接连接,并在两台服务器之间设置复制 ,必须确保将localhost上可用的数据复制到Amazon服务器上。 该查询将在亚马逊服务器上运行,并将查询复制的数据。
您可以通过直接连接到两个实例或通过在本地服务器上设置基于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.