Unload into a Snowflake stage

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.

Descarregamento de dados para um estágio do Snowflake

Dica

As instruções neste conjunto de tópicos supõem que você tenha lido File formats to unload data 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.

Unload the data

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.

Unload data to a named internal stage

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:

Snowsight:

No menu de navegação, selecione Catalog » Database Explorer. Em seguida, selecione <nome_bd> » Stages.

SQL:

CREATE STAGE

Create a named stage

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 File formats to unload data:

CREATE OR REPLACE STAGE my_unload_stage
  FILE_FORMAT = my_csv_unload_format;
Copy

Unload data to the named stage

  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

Unload data to a table stage

  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 File formats to unload data. 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

Unload data to your user stage

  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 File formats to unload data. 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

Manage unloaded data files

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.