다음을 통해 공유

使用 Databricks JDBC 驱动程序管理 Unity Catalog 卷中的文件

注释

本文适用于 Databricks JDBC Simba 驱动程序。 有关 Databricks 开发的 JDBC 驱动程序,请参阅 Databricks JDBC 驱动程序(OSS)。

本文介绍如何使用 Databricks JDBC 驱动程序上传、下载和删除 Unity Catalog 中的文件。

要求

  • Databricks JDBC 驱动程序版本 2.6.38 或更高版本。
  • 默认情况下,本机查询模式处于启用状态。 否则,请将 UseNativeQuery 属性添加到 JDBC 连接字符串,并将其值设置为 12

有关演示如何在使用 Databricks JDBC 驱动程序设置 Azure Databricks 身份验证和运行 SQL 语句的上下文中运行本文中代码片段的完整 Java 代码示例,请参阅 Databricks JDBC 驱动程序的身份验证设置

上传文件

若要将文件上传到卷,必须将 StagingAllowedLocalPaths 属性添加到 JDBC 连接字符串,并将此属性的值设为要上传的文件路径。 若要从不同的位置上传多个文件,请将此属性设置为使用逗号分隔的路径列表,例如 /tmp/,/usr/tmp/

重要

如果在多租户环境中(如 BI 工具或开发人员服务)中设置 JDBC,并且用户控制完整的 JDBC URL,则服务应将连接属性 StagingAllowedLocalPaths 设置为沙盒位置或不存在的路径。 这可以防止用户编写任意文件并干扰服务的内部部署。

若要覆盖指定上传位置中任何现有文件的内容,请添加 OVERWRITE

以下 Java 代码片段演示了如何将文件上传到卷。

// ...
p.put("StagingAllowedLocalPaths", "/tmp/");

Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("PUT '" +
                  "/tmp/my-data.csv" +
                  "' INTO '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "' OVERWRITE")
// ...

下载文件

以下 Java 代码片段演示了如何从卷下载文件。

// ...
Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("GET '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "' TO '" +
                  "/tmp/my-downloaded-data.csv" +
                  "'")
// ...

删除文件

以下 Java 代码片段演示了如何从卷删除文件。

// ...
Connection conn = DriverManager.getConnection(url, p);
Statement stmt = conn.createStatement();

stmt.executeQuery("REMOVE '" +
                  "/Volumes/main/default/my-volume/my-data.csv" +
                  "'")
// ...