在 JDBC 连接 URL 中提供两个模式名称

Posted

技术标签:

【中文标题】在 JDBC 连接 URL 中提供两个模式名称【英文标题】:Providing two schema name in JDBC connection URL 【发布时间】:2012-02-07 14:34:24 【问题描述】:

我的应用程序使用 xml 数据源文件来访问数据库。数据库中存在许多模式,访问任何模式都没有问题。

但是我们已经开始使用 BIRT 来生成报告和图表,因此我面临一个非常典型的问题。

在 BIRT 中,我需要创建一个数据源文件。问题是它接受 jdbc:connection url,我在其中提供 DB 的 url。但是连同 URL,它还要求我指定架构,否则 BIRT 没有显示任何价值在数据集中。 我可以轻松地指定一个模式名称,但是我的查询使用两个模式,因此我无法找到相同的替代方案...创建联合数据集是一种选择,但我的查询很复杂,通常它不是一个可行的选择我……

我指定的连接 URL 是:-

jdbc:mysql://IP:port/schemaName?someString

如何在我的 jdbc 连接 URL 中指定超过 2 个架构..???如何在 BIRT 中连接到单个数据源内的两个架构..

【问题讨论】:

建立两个连接...... 建立两个连接对我来说不是一个选项。我想同时访问两个模式的帖子中已经写过,因为 BIRT 中的 DATASET 只显示一个模式,而我的查询涉及 2-3架构。 【参考方案1】:

您从错误的角度解决了这个问题。 MySQL 允许连接来自不同模式的表。您应该让它知道要在哪个架构中查找哪个表。您可以通过在模式名称前面加上“。”来做到这一点。在查询中的每个表名之前,例如:

SELECT db1.products.prod_id, db2.products.upc_code FROM db1.products LEFT JOIN db2.products ON (db1.products.prod_id=db2.products.prod_id)

在这种情况下,您需要在连接 URL 中指定任一架构的名称。

【讨论】:

+1 值得一提的是,通过连接 URL 访问的任何架构都需要其他架构的读取权限。

以上是关于在 JDBC 连接 URL 中提供两个模式名称的主要内容,如果未能解决你的问题,请参考以下文章

带有忽略大小写的 JDBC URL 不适用于 H2 数据库连接

使用 oracle jdbc 连接时如何获取数据库模式名称?

Hive 通过 Jdbc 连接 HiveServer2

Hive 通过 Jdbc 连接 HiveServer2

如何从这个 XML 连接数据构建 JDBC 连接 url?

带有实例名称和域的 JDBC 连接字符串