Descarregamento em um estágio do Snowflake

Este conjunto de tópicos descreve como usar o comando COPY para descarregar dados de uma tabela para um estágio interno (ou seja, Snowflake). Você pode então baixar os arquivos de dados descarregados para seu sistema de arquivos local.

Como ilustrado no diagrama abaixo, a descarregamento de dados para um sistema de arquivos local é realizado em duas etapas separadas:

Etapa 1

Use o comando COPY INTO <local> para copiar os dados da tabela do banco de dados Snowflake para um ou mais arquivos em um estágio do Snowflake. Na instrução SQL, você especifica o estágio (estágio nomeado ou estágio de tabela/usuário) onde os arquivos são gravados.

Independentemente do estágio utilizado, esta etapa requer um warehouse virtual atual e em funcionamento para a sessão se você executar o comando manualmente ou dentro de um script. O warehouse fornece os recursos computacionais para gravar linhas a partir da tabela.

Etapa 2

Use o comando GET para baixar os arquivos de dados para seu sistema de arquivos local.

Unloading data to a Snowflake stage

Dica

As instruções neste conjunto de tópicos supõem que você tenha lido Preparação para descarregar dados e criado um formato de arquivo nomeado, se desejar.

Antes de começar, você também pode ler Considerações sobre o descarregamento de dados para obter práticas recomendadas, dicas e outras orientações.

Neste tópico:

Descarregamento dos dados

Esta seção fornece instruções para descarregar os dados da tabela para um estágio interno nomeado, estágio de tabela ou estágio do usuário.

Descarregamento de dados em um estágio interno nomeado

Os estágios internos são objetos de banco de dados nomeados que proporcionam o maior grau de flexibilidade para o descarregamento de dados. Como eles são objetos de banco de dados, os privilégios para estágios nomeados podem ser concedidos a qualquer função.

Você pode criar um estágio interno usando a interface da Web ou SQL:

Classic Console

Clique em Databases Databases tab » <nome_bd> » Stages

SQL

CREATE STAGE

Criação de um estágio nomeado

O exemplo seguinte cria um estágio interno que faz referência ao objeto de formato de arquivo nomeado chamado my_csv_unload_format que foi criado em Preparação para descarregar dados:

CREATE OR REPLACE STAGE my_unload_stage
  FILE_FORMAT = my_csv_unload_format;
Copy

Descarregamento de dados para o estágio nomeado

  1. Use o comando COPY INTO <local> para descarregar todas as linhas de uma tabela em um ou mais arquivos no estágio my_csv_unload_format. A instrução prefixa o(s) arquivo(s) descarregado(s) com unload/ para organizar os arquivos no estágio:

    Por exemplo:

    COPY INTO @mystage/unload/ from mytable;
    
    Copy

    Observe que o caractere @ por si só identifica um estágio nomeado.

    Nota

    Como as opções de formato de arquivo foram definidas para o estágio, não é necessário especificar as mesmas opções de formato de arquivo no comando COPY.

  2. Use o comando LIST para ver uma lista de arquivos que foram descarregados no estágio:

    LIST @mystage;
    
    +----------------------------------+------+----------------------------------+-------------------------------+
    | name                             | size | md5                              | last_modified                 |
    |----------------------------------+------+----------------------------------+-------------------------------|
    | mystage/unload/data_0_0_0.csv.gz |  112 | 6f77daba007a643bdff4eae10de5bed3 | Mon, 11 Sep 2017 18:13:07 GMT |
    +----------------------------------+------+----------------------------------+-------------------------------+
    
    Copy
  3. Use o comando GET para baixar o(s) arquivo(s) gerado(s) do estágio de tabela para sua máquina local. O seguinte exemplo faz o download dos arquivos no diretório data/unload:

    Por exemplo:

    Linux ou macOS:

    GET @mystage/unload/data_0_0_0.csv.gz file:///data/unload;
    
    Copy

    Windows:

    GET @mystage/unload/data_0_0_0.csv.gz file://C:\data\unload;
    
    Copy

Descarregamento de dados em um estágio de tabela

  1. Use o comando COPY INTO <local> para descarregar todas as linhas de uma tabela em um ou mais arquivos no estágio para a tabela. O exemplo a seguir descarrega arquivos de dados no estágio utilizando o formato de arquivo nomeado my_csv_unload_format criado em Preparação para descarregar dados. A instrução prefixa o(s) arquivo(s) descarregado(s) com unload/ para organizar os arquivos no estágio:

    Por exemplo:

    COPY INTO @%mytable/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
    
    Copy

    Observe que a combinação de caracteres @% identifica um estágio de tabela.

  2. Use o comando LIST para ver uma lista de arquivos que foram descarregados no estágio:

    LIST @%mytable;
    
    +-----------------------+------+----------------------------------+-------------------------------+
    | name                  | size | md5                              | last_modified                 |
    |-----------------------+------+----------------------------------+-------------------------------|
    | unload/data_0_0_0.csv |   96 | 29918f18bcb35e7b6b628ca41024236c | Mon, 11 Sep 2017 17:45:20 GMT |
    +-----------------------+------+----------------------------------+-------------------------------+
    
    Copy
  3. Use o comando GET para baixar o(s) arquivo(s) gerado(s) do estágio de tabela para sua máquina local. O seguinte exemplo faz o download dos arquivos no diretório data/unload:

    Por exemplo:

    Linux ou macOS:

    GET @%mytable/unload/data_0_0_0.csv file:///data/unload;
    
    Copy

    Windows:

    GET @%mytable/unload/data_0_0_0.csv file://C:\data\unload;
    
    Copy

Descarregamento de dados em seu estágio de usuário

  1. Use o comando COPY INTO <local> para descarregar todas as linhas de uma tabela em um ou mais arquivos em seu estágio. O exemplo a seguir descarrega arquivos de dados em seu estágio de usuário utilizando o formato de arquivo nomeado my_csv_unload_format criado em Preparação para descarregar dados. A instrução prefixa o(s) arquivo(s) descarregado(s) com unload/ para organizar os arquivos no estágio:

    Por exemplo:

    COPY INTO @~/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
    
    Copy

    Observe que a combinação de caracteres @~ identifica um estágio de usuário.

  2. Use o comando LIST para ver uma lista de arquivos que foram descarregados no estágio:

    LIST @~;
    
    +-----------------------+------+----------------------------------+-------------------------------+
    | name                  | size | md5                              | last_modified                 |
    |-----------------------+------+----------------------------------+-------------------------------|
    | unload/data_0_0_0.csv |   96 | 94a306c55733b95a0887511ff355936b | Mon, 11 Sep 2017 17:25:07 GMT |
    +-----------------------+------+----------------------------------+-------------------------------+
    
    Copy
  3. Use o comando GET para baixar o(s) arquivo(s) gerado(s) do seu estágio para sua máquina local. O seguinte exemplo faz o download dos arquivos no diretório data/unload:

    Por exemplo:

    Linux ou macOS:

    GET @~/unload/data_0_0_0.csv file:///data/unload;
    
    Copy

    Windows:

    GET @~/unload/data_0_0_0.csv file://C:\data\unload;
    
    Copy

Gerenciamento de arquivos de dados descarregados

Arquivos preparados podem ser excluídos de um estágio do Snowflake usando o comando REMOVE para remover os arquivos no estágio depois que você terminar de usá-los.

A remoção de arquivos melhora o desempenho ao carregar dados, pois reduz o número de arquivos que o comando COPY INTO <tabela> deve examinar para verificar se os arquivos existentes em um estágio já foram carregados.