下载/集成 JDBC 驱动程序¶
JDBC 驱动程序 (snowflake-jdbc
) 以 JAR 文件的形式提供,可以作为 Maven 中的构件下载或直接集成到基于 Java 的项目中。
在下载或集成驱动程序之前,可能需要首先验证当前使用的驱动程序版本。要验证驱动程序版本,请通过使用驱动程序的客户端应用程序连接到 Snowflake,并检查驱动程序版本。如果应用程序支持执行 SQL 查询,可以通过调用 CURRENT_CLIENT 函数来实现这一点。
本主题内容:
要求¶
有关 Snowflake 客户端支持的操作系统列表,请参阅 操作系统支持。
下载驱动程序¶
要下载驱动程序,请执行以下操作:
转到 Maven 中央存储库。
点击所需版本的目录。
最新版本 (3.16.0) 并不总是位于列表的末尾。版本按 :emph:` 字母顺序 ` (而不是按数字顺序)列出。例如,3.10.x 位于 3.1.x 之后,而不是 3.9.x 之后。
下载
snowflake-jdbc-#.#.#.jar
文件。备注
如果需要,可以通过输入以下命令来验证 JDBC 驱动程序版本:
java -jar snowflake-jdbc-#.#.#.jar --version
,其中#.#.#
与下载的文件名中的版本号匹配。如果计划 :ref:` 验证驱动程序包签名 <label-jdbc-driver-verify-package>`,请下载
snowflake-jdbc-#.#.#.jar.asc
文件。
验证驱动程序包签名 – 可选¶
要验证 JDBC 驱动程序包签名,请执行以下操作:
从公钥服务器中,下载并导入正在使用的 JDBC 驱动程序版本的 Snowflake GPG 公钥:
对于版本 3.13.23 及更高版本:
$ 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
然后指定您要将端口 80 用于密钥服务器:
gpg --keyserver hkp://keyserver.ubuntu.com:80 ...
运行
gpg --verify
命令来验证包的签名。对于
--verify
命令行标志,将您 之前下载 的.asc
文件指定为签名文件,并将 JAR 文件指定为包含签名数据的文件。例如:
$ gpg --verify snowflake-jdbc-3.16.0.jar.asc snowflake-jdbc-3.16.0.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.16.0 仅用于说明目的。驱动程序的最新可用版本可能更高。
备注
验证签名会产生类似于以下内容的警告:
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.
为了避免警告,您可以授予 Snowflake GPG 公钥隐式信任。
您的本地环境可以包含多个 GPG 密钥;然而,出于安全原因,Snowflake 会定期轮换 GPG 公钥。作为最佳实践,我们建议在确认最新密钥适用于最新签名的包后删除现有公钥:
$ gpg --delete-key "Snowflake Computing"
将驱动程序集成到 Maven 项目中¶
要将驱动程序集成到 Maven 项目中,请将驱动程序作为依赖项添加到 pom.xml
文件中。例如:
<dependencies> ... <dependency> <groupId>net.snowflake</groupId> <artifactId>snowflake-jdbc</artifactId> <version>3.16.0</version> </dependency> ... </dependencies>
其中, <version>
标签指定要集成的驱动程序版本。请注意,本示例中使用的版本 3.16.0 仅用于说明目的。驱动程序的最新可用版本可能更高。
开发者说明与源代码一起托管在 ` 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 系统不兼容。)