SQL查询多个系统上的相同表

时间:2011-02-23 10:51:05

标签: mysql sql delphi

申请概述:
我有一个Delphi应用程序,允许用户在不同系统上运行MySQL数据库查询,使用TADOQuery组件检索数据。用户可以通过运行两个单独的查询从两个不同系统上的相同表中检索数据(例如,system1和system2上的database_abc中的table_xyz),然后将这两组数据写入文件并在PC上手动连接以形成一个报告。

问题:
是否可以通过一个查询从不同系统上的相同表/数据库中选择数据?由于TADOQuery的连接字符串必须指向单个系统,我非常有信心这是不可能的,但我想确保这是正确的。

我知道可以通过使用UNION语句从同一系统上的两个不同数据库中的两个相同表中检索数据,例如: select * from database1.table_xyz UNION select * from database2.table_xyz

我需要做的是类似于上面的示例,只检索来自不同系统上的数据库的数据。基本上,是否有可能以某种方式将连接字符串合并到SQL语句中,或者以某种方式以不同的方式连接?

就像我说的那样,我确信这是不可能的,但检查不会有害!

1 个答案:

答案 0 :(得分:2)

这称为“分布式查询”,需要数据库引擎支持。在MySQL中,这可以帮助您:http://dev.mysql.com/tech-resources/articles/mysql-federated-storage.html(从5.0开始提供)。在Oracle中称为“数据库链接”,而Shiv Kumar在MS SQL中称为“链接服务器”。 联邦引擎的一个缺点是它要求您创建一个镜像“远程”引擎的表,而其他数据库只需一旦建立到远程服务器的链接就可以访问远程表,而无需保留声明同步。此外,远程数据库必须是另一个MySQL数据库(其他引擎支持针对以太服务器的分布式查询)。