Gerencie arquivos em volumes do Catálogo Unity com o Databricks JDBC Driver (Simba)

Observação

Esta página aplica-se ao Simba JDBC Driver (Legacy), versões abaixo da versão 3. A Databricks recomenda fortemente a migração para o driver JDBC do Databricks para conectividade JDBC. Inclui melhorias como suporte para vistas métricas do Unity Catalog, transações que abrangem múltiplas instruções SQL, procedimentos armazenados, recuperação mais rápida de grandes resultados e telemetria integrada no cliente.

Esta página descreve como carregar, descarregar e eliminar ficheiros em volumes do Catálogo Unity usando o driver JDBC Databricks.

Requisitos

  • Databricks JDBC Driver versão 2.6.38 ou superior
  • Modo de consulta nativo ativado (predefinido). Se estiver desativado, adicione UseNativeQuery=1 ou UseNativeQuery=2 à sua cadeia de ligação.

Para um exemplo completo em Java com configuração de autenticação, consulte Definições de Autenticação para o Driver JDBC Databricks (Simba).

Carregar um ficheiro

Para carregar um ficheiro, adiciona a StagingAllowedLocalPaths propriedade à tua string de ligação com o caminho do ficheiro a carregar. Para múltiplas localizações de fonte, use uma lista separada por vírgulas (por exemplo, /tmp/,/usr/tmp/).

Importante

Em ambientes de múltiplos inquilinos onde os utilizadores controlam o URL JDBC (como ferramentas de BI ou serviços de programação), defina StagingAllowedLocalPaths para uma localização sandbox ou caminho inexistente. Isto impede que os utilizadores escrevam ficheiros arbitrários e interfiram com a implementação interna do serviço.

Para sobrescrever um ficheiro existente, adicione OVERWRITE à instrução.

// ...
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")
// ...

Transferir um ficheiro

Use GET para descarregar um ficheiro de um volume para um caminho local:

// ...
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" +
                  "'")
// ...

Eliminar um ficheiro

Use REMOVE para eliminar um ficheiro de um volume:

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

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