通过PHP在两个不同的数据库连接之间复制一些MySQL行

时间:2016-12-16 08:04:36

标签: php mysql

我想将一些行从srcdb.srctb复制到dstdb.dsttb,这些行在那些具有不同用户和密码访问权限的单独服务器中。由于在PHP中,我们可以在mysql_query()中使用一个连接资源,如何运行我的查询?例如:

$dblink_src = ($srchost, $srcuser, $srcpass);
$dblink_dst = ($dsthost, $dstuser, $dstpass);
mysql_query('insert into dstdb.dsttb select * from srcdb.srctb as mysrc where mysrc.provid=8', ????);

我不知道应该放什么而不是" ????"因为,我可以只使用一个数据库连接,但我需要2来指定两个不同的数据库连接。

1 个答案:

答案 0 :(得分:0)

如果这是同一个主机,则必须由有权访问两次数据库的用户替换????

$dblink = mysql_connect($srchost,$userWithAccessToSrcAndDest,$pass);

mysql_query('insert into dstdb.dsttb select * from srcdb.srctb as mysrc where mysrc.provid=8',$dblink);

我这是两个不同的主机,或者如果没有用户可以访问源数据库和目标数据库,则必须在源数据库中使用SELECT INTO OUTFILE,在目标数据库中使用LOAD DATA INFILE。 @ e4c5。

请考虑使用PDO代替mysql_*函数

以下是使用联合表的另一种解决方案:

在第一台服务器上,创建表格视图:

create view test_view as
select * from srcdb.srctb as mysrc where mysrc.provid=8

在目标服务器上,创建联合视图:

CREATE TABLE federated_table (
    //Put your description 
)
ENGINE=FEDERATED
DEFAULT CHARSET=latin1
CONNECTION='mysql://src_user@src_host:3306/src_database/test_view';

您可以在此Mysql chapter

上找到有关语法的更多说明