在多个数据库上执行一个MySQL查询

3

我有一个简单的问题,让我彻夜难眠:(。

假设我们有两个位于不同服务器上的数据库。你可以轻松地创建两个连接并在两个数据库中操作数据。

如果我想在这两个数据库上执行一个查询怎么办?

例如:

INSERT INTO database1.table1 
VALUES ( 'one','two','three') 
WHERE database1.table1.something LIKE (SELECT something from database2.table2)

很抱歉,我的代码不是很熟练,对于SQL代码我并不是很有经验。

当所有数据库都可以通过同一连接访问时,这种尝试是可能的。

但是,如果数据库位于不同的服务器上(需要两个连接),是否可能实现相同的结果呢?

如果存在这样的解决方案,对我来说会更加容易 :(.

最好的问候


4
数据库引擎并非真正设计用于执行这种类型的任务。 - Amber
联接服务器已经存在了很长一段时间,至少从我记得的时候就有了 - 例如 Oracle(10年以上)。不过,如果要使用类似于 MS Enterprise Services 的东西,则需要使用 2 阶段提交(Think MTS)http://en.wikipedia.org/wiki/Two-phase_commit_protocol(如果你喜欢 CORBA,也可以使用)。 - Jon Black
1个回答

1

好的,可以通过一个连接(客户端到其中一台服务器的一个连接。会有从该服务器到其他服务器的连接)。只需使用FEDERATED存储引擎。它会按你想要的方式工作(但请注意,由于所有额外的解析和网络流量,它可能会非常慢)...


+1:我正要发同样的帖子 - Oracle和SQL Server具有连接到其他数据库(包括其他供应商的数据库)的功能。PostgreSQL 8.4添加了dblink,但仅支持连接到其他PostgreSQL实例... - OMG Ponies
是的,MySQL只支持其他MySQL服务器。但我记得在某个地方看到过一个支持ODBC的插件引擎。我找到了FederatedX,但那并不是很好... - ircmaxell
谢谢你的回答,我觉得那可能会起作用。我尝试了一下,它正好像我希望的那样工作。速度还可以,反正我只需要在小表格上进行定时任务。再次感谢。 - Ziga Petek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接