下载/集成 JDBC 驱动程序

JDBC 驱动程序 (snowflake-jdbc) 以 JAR 文件形式提供,在 Maven 中作为工件可供下载或直接集成到基于 Java 的项目中。此外,还可以从 Maven 下载以下类型的驱动程序:

  • 名为 snowflake-jdbc-fips 的符合 FIPS 的重量级 jar。

  • 名为 snowflake-jdbc-thin 的轻量级 jar。

其他类型的源代码相同,但它们的依赖项配置不同,如下所示:

  • 符合 FIPS 的重量级 jar 未嵌入 FIPS Bouncy Castle 依赖项,因此需要在运行时提供这些依赖项。

  • 轻量级 jar 仅嵌入了一些依赖项,因此您需要根据 pom 文件声明提供其他依赖项。

所有 JAR 类型都以相同的版本号发布。

在下载或集成驱动程序之前,您应该验证当前使用的驱动程序的版本。要验证驱动程序版本,请通过使用驱动程序的客户端应用程序连接到 Snowflake,并检查驱动程序版本。如果应用程序支持执行 SQL 查询,可以通过调用 CURRENT_CLIENT 函数来实现这一点。

本主题内容:

要求

有关 Snowflake 客户端支持的操作系统列表,请参阅 操作系统支持

下载所需类型的驱动程序

要下载驱动程序,请按照所需驱动程序类型的步骤进行操作。

下载标准驱动程序

要下载标准驱动程序,请执行以下操作:

  1. 转到 Maven Central Repository 获取标准驱动程序。

  2. 选择所需版本的目录。

    最新版本 (3.23.2) 并不总是位于列表的末尾。版本按 :emph:` 字母顺序 ` (而不是按数字顺序)列出。例如,3.10.x 位于 3.1.x 之后,而不是 3.9.x 之后。

  3. 下载相应的 snowflake-jdbc-#.#.#.jar 文件:

    备注

    您可以通过输入以下命令来验证 JDBC 驱动程序版本:

    java -jar snowflake-jdbc-#.#.#.jar --version,其中 #.#.# 与下载的文件名中的版本号匹配。

  4. 可选:要 验证驱动程序包签名,请下载相应的 snowflake-jdbc-#.#.#.jar.asc 文件。

下载符合 FIPS 的驱动程序

要下载符合 FIPS 的驱动程序,请执行以下操作:

  1. 转到 Maven Central Repository 获取符合 FIPS 的驱动程序。

  2. 选择所需版本的目录。

    最新版本 (3.23.2) 并不总是位于列表的末尾。版本按 :emph:` 字母顺序 ` (而不是按数字顺序)列出。例如,3.10.x 位于 3.1.x 之后,而不是 3.9.x 之后。

  3. 下载相应的 snowflake-jdbc-fips-#.#.#.jar 文件:

    备注

    您可以通过输入以下命令来验证 JDBC 驱动程序版本:

    java -jar snowflake-jdbc-fips-#.#.#.jar --version,其中 #.#.# 与下载的文件名中的版本号匹配。

  4. 或者,您可以 验证驱动程序包签名,下载相应的 snowflake-jdbc-fips-#.#.#.jar.asc 文件。

下载轻量级 jar 驱动程序

要下载轻量级 jar 驱动程序,请执行以下操作:

  1. 转到 Maven Central Repository 获取轻量级 jar 驱动程序。

  2. 选择所需版本的目录。

    最新版本 (3.23.2) 并不总是位于列表的末尾。版本按 :emph:` 字母顺序 ` (而不是按数字顺序)列出。例如,3.10.x 位于 3.1.x 之后,而不是 3.9.x 之后。

  3. 下载相应的 snowflake-jdbc-thin-#.#.#.jar 文件:

    备注

    您可以通过输入以下命令来验证 JDBC 驱动程序版本:

    java -jar snowflake-jdbc-thin-#.#.#.jar --version,其中 #.#.# 与下载的文件名中的版本号匹配。

  4. 或者,您可以 验证驱动程序包签名,下载相应的 snowflake-jdbc-thin-#.#.#.jar.asc 文件。

可选:验证驱动程序包签名

要验证 JDBC 驱动程序包签名,请执行以下操作:

  1. 从公钥服务器中,下载并导入正在使用的 JDBC 驱动程序版本的 Snowflake GPG 公钥:

    • 对于版本 3.22.0 及更高版本:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 2A3149C82551A34A
    • 对于版本 3.19.1 至 3.21.0:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 5A125630709DD64B
    • 对于版本 3.13.23 至 3.19.0:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 630D9F3CAB551AF3
    • 对于版本 3.12.13 至 3.13.22:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 37C7086698CB005C
    • 对于版本 3.6.26 至 3.12.12:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys EC218558EABB25A1
    • 对于版本 3.6.25 及更低版本:

      $ gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 93DB296A69BE019A

    备注

    如果此命令失败并出现以下错误:

    gpg: keyserver receive failed: Server indicated a failure
    
    Copy

    然后指定您要将端口 80 用于密钥服务器:

    gpg --keyserver hkp://keyserver.ubuntu.com:80  ...
    
    Copy
  2. 运行 gpg --verify 命令来验证包的签名。

    对于 --verify 命令行标志,将您 之前下载.asc 文件指定为签名文件,并将 JAR 文件指定为包含签名数据的文件。

    例如:

    $ gpg --verify snowflake-jdbc-3.23.2.jar.asc snowflake-jdbc-3.23.2.jar
    gpg: Signature made Wed 22 Feb 2017 04:31:58 PM UTC using RSA key ID <gpg_key_id>
    gpg: Good signature from "Snowflake Computing <snowflake_gpg@snowflake.net>"

    为要验证的 JDBC 驱动程序包指定正确的版本号。本示例中使用的版本 3.23.2 仅用于说明目的。驱动程序的最新可用版本可能更高。

    备注

    验证签名会产生类似于以下内容的警告:

    gpg: Signature made Mon 24 Sep 2018 03:03:45 AM UTC using RSA key ID <gpg_key_id>
    gpg: Good signature from "Snowflake Computing <snowflake_gpg@snowflake.net>" unknown
    gpg: WARNING: This key is not certified with a trusted signature!
    gpg: There is no indication that the signature belongs to the owner.
    
    Copy

    为了避免警告,您可以授予 Snowflake GPG 公钥隐式信任。

  3. 您的本地环境可以包含多个 GPG 密钥;然而,出于安全原因,Snowflake 会定期轮换 GPG 公钥。作为最佳实践,我们建议在确认最新密钥适用于最新签名的包后删除现有公钥:

    $ gpg --delete-key "Snowflake Computing"
    
    Copy

将驱动程序集成到 Maven 项目中

要将驱动程序集成到 Maven 项目中,请执行以下操作:

  • 将驱动程序作为依赖项添加到 pom.xml 文件中。

例如:

  • 标准驱动程序

    <dependencies>
      ...
      <dependency>
        <groupId>net.snowflake</groupId>
        <artifactId>snowflake-jdbc</artifactId>
        <version>3.23.2</version>
      </dependency>
      ...
    </dependencies>
  • 符合 FIPS 的驱动程序

    <dependencies>
      ...
      <dependency>
        <groupId>net.snowflake</groupId>
        <artifactId>snowflake-jdbc-fips</artifactId>
        <version>3.23.2</version>
      </dependency>
      ...
    </dependencies>
  • 轻量级 jar 驱动程序

    <dependencies>
      ...
      <dependency>
        <groupId>net.snowflake</groupId>
        <artifactId>snowflake-jdbc-thin</artifactId>
        <version>3.23.2</version>
      </dependency>
      ...
    </dependencies>

其中,<version> 标签指定要集成的驱动程序版本。请注意,本示例中使用的版本 3.23.2 仅用于说明目的。可能有更高版本的驱动程序可用。

开发者说明与源代码一起托管在 `GitHub <https://github.com/snowflakedb/snowflake-jdbc (https://github.com/snowflakedb/snowflake-jdbc)> `_ 上。

将 JNA 类添加到类路径

:ref:` 基于浏览器的 SSO 的连接缓存 <label-browser_based_sso_connection_caching>` 和 :ref:` 多重身份验证 (MFA) 的令牌缓存 <label-mfa_token_caching>` 需要使用 ` Java 本地访问 (JNA) 类 <https://github.com/java-native-access/jna/blob/master/README.md (https://github.com/java-native-access/jna/blob/master/README.md)>`_ 将数据安全地保存到文件系统中。

从 JDBC 驱动程序版本 3.12.18 开始, JNA 类不再打包在 JDBC 驱动程序 JAR 文件中。在 JDBC 驱动程序 pom.xml 文件中,对这些类的依赖项标记为可选。

如果需要使用连接缓存或令牌缓存,则必须将以下库添加到类路径中:

  • 对于 Mac 和 Linux:

    • JNA

  • 对于 Windows:

    • JNA

    • JNA 平台

JDBC 驱动程序的 pom.xml 文件指定已使用 JDBC 驱动程序测试的 JNA 类的版本。Snowflake 建议使用 JNA 类的此版本(或相同的主要版本)。

备注

对于使用 aarch64 架构的系统(例如 Apple M1 芯片),请使用版本 5.7.0 或更高版本的 JNA 库。(v5.7.0 之前的 JNA 版本与在 aarch64 中运行的 Windows 和 macOS 系统不兼容。)

语言: 中文