1

我有一个项目正在进行中,它的全部内容是从不同供应商的多个数据库中查询数据(我的意思是使用一个查询语句同时查询 mysql、hsqldb、microsoft sql、oracle 等数据库)。虽然我通过按顺序加载数据库连接器的每个驱动程序并在数据库中按顺序执行查询来实现这一点。但是项目架构是这样的,当我发送查询语句时,它应该同时访问每个数据库并检索所有相关数据库中是否可用的项目。我遇到了这个unityjdbc软件,一个中介软件,但不知道如何在我的java源文件中实现它以实现我的目标。我已经阅读了 unityjdbc 用户手册,但不是很清楚和直截了当。请任何人都可以建议如何在我的 java 应用程序中实现这个 unityjdbc 驱动程序并使用它来成功查询多个数据库。也欢迎提出使用单个语句同时查询其多个数据库的任何其他方式的建议。

4

2 回答 2

2

UnityJDBC 允许您在一个 SQL 查询中查询多个数据库。您不能使用单独的线程来执行此操作,因为您将自己负责在 Java 程序中合并来自多个数据库的数据。

设置步骤很简单:

  1. 使用 SourceBuilder 应用程序指定数据库的 JDBC 连接信息。

  2. 测试访问多个数据库的示例查询。支持标准 SQL。要引用不同数据库中的表,请在 FROM 子句中使用databaseName.tableName 。
    例如:

    SELECT * FROM Database1.Table1 T1 INNER JOIN Database2.Table2 T2 ON T1.id = T2.id

  3. SourceBuilder 应用程序将提供一个 XML 配置文件作为输出,通常称为 sources.xml。要在您自己的 Java 程序或任何支持 JDBC 的软件中使用它,连接 URL 为:jdbc:unity://sources.xml 您可以指定 sources.xml 文件的绝对或相对路径。

在他们的网站上有文档http://www.unityjdbc.com/support/或联系他们以获得免费支持。

另一种快速入门的方法是使用开源查询软件 SQuirreL SQL 附带的MultiSource SQL Plugin 。该插件将允许您在 SQuirreL 中使用 SQL 查询任意数量的数据库,并将生成 XML 配置文件供您在其他程序中使用。该插件是开源和免费的。该插件还支持查询和连接 NoSQL 数据库(如 MongoDB)与关系数据库(如 MySQL 和 Postgres)。

于 2013-10-03T22:37:16.980 回答
1

如果您已经设法加载所有特定于 db 的 JDBC 驱动程序,则您不需要 UnityJDBC 来完成您想做的事情。

相反,您应该考虑在单独的线程中执行每个查询。这样,您无需在查询下一个数据库之前等待一个数据库返回其结果。

于 2013-05-13T12:28:52.700 回答