我想将一些行从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来指定两个不同的数据库连接。
答案 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
上找到有关语法的更多说明