从一个数据库服务器检索值并使用PHP将它们存储在其他数据库服务器中?

时间:2012-11-20 10:01:32

标签: php mysql sql

我正在做一个项目 如何从一个数据库服务器检索值并使用PHP将它们存储在其他数据库服务器中?

2 个答案:

答案 0 :(得分:2)

如果数据库位于同一主机上,并且用户可以访问这两个数据库,则可以轻松地交换数据:

INSERT INTO database2.table1 (*fields*) 
SELECT *fields* FROM database1.table1

字段替换为表格中的字段列表。 请注意,此查询将获取整个表格,可能需要一些时间。

如果数据库位于不同的主机上,或者出于任何其他原因,您只能通过一个连接连接到这两个数据库,请执行以下操作:

$dbh1 = mysql_connect($hostname, $username, $password); 
$dbh2 = mysql_connect($hostname, $username, $password, true); 
//the fourth parameter makes sure that a new link is opened as if the parameters are the same, php will grab the old connection instead of creating one.

mysql_select_db('database1', $dbh1);
mysql_select_db('database2', $dbh2);

然后查询数据库1,执行以下操作:

mysql_query('select * from tablename', $dbh1);

和数据库2:

mysql_query('select * from tablename', $dbh2);

......或者在PDO ......

$database1 = new PDO('mysql:dbname=database1name;host=127.0.0.1', 'username', 'password');
$database2 = new PDO('mysql:dbname=database2name;host=127.0.0.1', 'username', 'password');
$result1 = $database1->query("select * from tablename");
$result2 = $database2->query("select * from tablename");

答案 1 :(得分:0)

可以通过插入选择组合

考虑以下示例。

 INSERT INTO tbl_temp2 (fld_id)
 SELECT tbl_temp1.fld_order_id
 FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;