Tableau 和 JDBC
Tableau 支持多个连接器的 JDBC(Java 数据库连接)驱动程序。这既包括官方命名的连接器(例如 Athena),也包括与其他基于 JDBC 的驱动程序一起使用的通用连接器,称为其他 (JDBC)。
JDBC 需要 Java,这使得它独立于平台。从版本 2020.2 开始,所有 Tableau 应用程序都与 Java 运行时捆绑在一起,因此您不必单独安装它。
注意:如果您使用 2020.2 之前的 Tableau Desktop 版本,请参见驱动程序下载(链接在新窗口中打开)页面,了解有关安装 Java 的说明。
Tableau 支持自定义 JDBC 数据连接的功能,这可以改善连接体验。有关详细信息,请参见自定义和调整连接。
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 功能的自定义项。