Tableau 和 JDBC
Tableau 支持多个连接器的 JDBC(Java 数据库连接)驱动程序。这既包括官方命名的连接器(例如 Athena),也包括与其他基于 JDBC 的驱动程序一起使用的通用连接器,称为其他 (JDBC)。
JDBC 需要 Java,这使得它独立于平台。从版本 2020.2 开始,所有 Tableau 应用程序都与 Java 运行时捆绑在一起,因此您不必单独安装它。
注意:如果您使用 2020.2 之前的 Tableau Desktop 版本,请参见驱动程序下载(链接在新窗口中打开)页面,了解有关安装 Java 的说明。
调整 JDBC 连接器性能
Tableau 支持自定义 JDBC 数据连接的功能,这可以改善连接体验。有关详细信息,请参见自定义和调整连接。
针对 JDBC 连接的 Tableau 支持
Tableau 不保证使用具有任何特定 JDBC 驱动程序或数据库的其他数据库 (JDBC) 连接器将能够成功连接和查询数据。有些 JDBC 驱动程序支持完整 Tableau 交互式体验,而有些驱动程序可能仅可用于创建数据提取。某些 JDBC 驱动程序可能无法与 Tableau 配合工作。
注意:Tableau 将提供合理的客户支持级别来帮助排除使用 JDBC 驱动程序进行连接的故障,但无法创建或自定义连接器来处理特定的 JDBC 驱动程序。
常见问题
下面列出了一些常见问题和解决步骤。
我看到一条“缺少 Java”消息。现在怎么办?
如果您使用 2020.2 之前的 Tableau 版本,或在 Windows 上使用 Kerberos,有时会发生这种情况。有关为连接器安装正确版本的 Java 的说明,请参见驱动程序下载(链接在新窗口中打开)页面。
从版本 2020.2 开始,所有 Tableau 应用程序都与 Java 运行时捆绑在一起,因此不会出现此错误。
我看到一条“缺少驱动程序”消息。我该怎么办?
在以下路径之一中安装驱动程序及其所依赖的任何库:
- Windows:C:\Program Files\Tableau\Drivers
- Mac:/Library/JDBC 或 ~/Library/JDBC
- Linux: /opt/tableau/tableau_driver/jdbc
确保运行 Tableau 的用户或 Tableau 服务用户可读取驱动程序。
我为 Tableau 安装了多个 JDBC 驱动程序,但连接时遇到问题。我该怎么办?
如果您为 Tableau 安装了多个 JDBC 驱动程序,则它们可能使用不同的版本相同的第三方库。这可能会以不可预测的方式导致问题。如果在连接时出现奇怪的错误,并且 JDBC 驱动程序文件夹中安装了多个 JDBC 驱动程序,则可以使用以下步骤来隔离它们。
假设您在 JDBC 文件夹中安装了这些库:
- athena-driver.jar
- athena-dependency.jar
- athena-dependency.so
- postgres-driver.jar
要将 Athena 驱动程序与 Postgres 驱动程序隔离,请将它们安装在单独的子目录中:
- Athena/athena-driver.jar
- Athena/athena-dependency.jar
- Athena/athena-dependency.dll
- Postgres/postgres-driver.jar
移动驱动程序后,重新启动 Tableau。
我看到一条“ClassNotFoundException”(或类似)消息。我该怎么办?
如果您运行的 JDBC 驱动程序不兼容 Java 11,则可能会在运行 Tableau 时遇到问题。
如果您认为您的问题可能是由 Java 11 引起的:
- 从 AdoptOpenJDK 下载 Java 64 位 JRE(Java 运行时环境)或 JDK(Java 开发工具包):
- 转到 https://adoptopenjdk.net/releases.html。
- 选择“OpenJDK11”,然后选择“Hotspot”。
- 选择“其他平台”可查看选项的完整列表。
- 下载适用于您的操作系统的 JRE 或 JDK。
- 在运行 Tableau 的计算机上,设置如下环境变量:
TABLEAU_JAVA_HOME=C:\Program Files\AdoptOpenJDK\jre-8.0.232.09-hotspot
或
TABLEAU_JAVA_HOME=C:\Program Files\AdoptOpenJDK\jdk-8.0.252.09-hotspot
如何解决代理问题?
从版本 2019.4 开始,当 Tableau 在 Windows 上运行时,它通过为 Java 启用 useSystemProxies
选项来读取代理设置。
在某些情况下,这可能会导致问题。举例来说,如果选择“为所有协议使用相同的代理服务器”,Java 虚拟机会尝试使用 SOCKS 代理。
若要查找解决此问题的说明,请参见名为 Tableau 无法通过代理连接到 Amazon Athena,并出现错误代码 37CE01A3 的 Tableau 知识库文章。本文具体提到 Athena,但此方法可能适用于任何 JDBC 连接器。
使用 SSL 连接到服务器时遇到问题。我可以尝试什么操作?
如果看到错误消息,比如“Couldn’t find SSL verification path”(找不到 SSL 验证路径),您可能需要配置证书或私钥。
有关使用证书的说明,请参见适用于 JDBC 连接的单向 SSL。如果您使用的是 Oracle JDBC 驱动程序,请参见使用 SSL 的 Oracle JDBC 连接,了解有关使用相应证书和/或密钥进行连接的信息。
将其他数据库 (JDBC) 连接器与 Postgres JDBC 驱动程序结合使用时,尝试创建数据提取有时失败。我可以尝试什么操作?
如果未设置 Postgres 驱动程序提取大小,并且启用了自动提交,则可能会遇到错误。驱动程序将尝试一次性处理太多数据,但无法处理。
请尝试以下操作:
- 使用 defaultRowFetchSize 设置数据的提取大小。
有关详细信息, 请参见PostgreSQL 站点上的 JDBC 驱动程序(链接在新窗口中打开)页面。
- 通过创建(或编辑现有)TDC 文件来禁用自动提交。在 TDC 文件中包括以下内容:
<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class="genericjdbc" enabled="true" version="10">
<vendor name="genericjdbc"/>
<driver name="postgresql"/>
<customizations>
<customization name="CAP_JDBC_QUERY_DISABLE_AUTO_COMMIT" value="yes"/>
</customizations>
</connection-customization>注意:尽管使用其他数据库 (JDBC) 连接器时需要此步骤,但对于指定的 Tableau 连接器,并不是因为默认情况下已设置自动提交。
有关为 JDBC 连接使用 TDC 文件的详细信息,请参见自定义和调整连接。
另请参见
其他数据库 (JDBC) – 描述如何使用通用 JDBC 连接器连接到数据。
自定义和调整连接 - 描述如何使用 TDC 和 .properties 文件自定义连接。
适用于 JDBCP 连接的单向 SSL– 提供有关使用带有 JDBC 驱动程序的证书通过 SSL 访问服务器的说明。
Tableau JDBC 功能自定义项参考 - 列出可用于定义数据源支持的 Tableau 功能的自定义项。