Escolha de um estágio interno para os arquivos locais

Um estágio especifica onde os arquivos de dados são armazenados (isto é, “preparados”) para que os dados nos arquivos possam ser carregados em uma tabela.

Neste tópico:

Tipos de estágios internos

O Snowflake oferece suporte aos seguintes tipos de estágios internos:

  • Usuário

  • Tabela

  • Nomeado

Por padrão, a cada usuário e tabela no Snowflake é atribuído automaticamente um estágio interno para a preparação dos arquivos de dados a serem carregados. Além disso, você pode criar estágios internos nomeados.

As informações de preparação de arquivos são necessárias durante as duas etapas do processo de carregamento de dados:

  1. Você deve especificar um estágio interno no comando PUT ao carregar arquivos no Snowflake.

  2. Você deve especificar o mesmo estágio no comando COPY INTO <tabela> ao carregar dados em uma tabela a partir dos arquivos preparados.

Considere o melhor tipo de estágio para arquivos de dados específicos. Cada opção oferece benefícios e possíveis inconvenientes.

Estágios do usuário

Cada usuário tem um estágio do Snowflake alocado a ele por padrão para armazenar arquivos. Este estágio é uma opção conveniente se seus arquivos forem acessados apenas por um único usuário mas precisarem ser copiados em várias tabelas.

Os estágios do usuário têm as seguintes características e limitações:

  • Os estágios do usuário são referenciadas usando @~; por exemplo, use LIST @~ para listar os arquivos em um estágio do usuário.

  • Ao contrário dos estágios nomeados, os estágios do usuário não podem ser alterados ou descartados.

  • Os estágios do usuário não oferecem suporte à configuração de opções de formato de arquivo. Em vez disso, você deve especificar o formato do arquivo e as opções de cópia como parte do comando COPY INTO <tabela>.

Esta opção não é apropriada se:

  • Vários usuários requerem acesso aos arquivos.

  • O usuário atual não tem privilégios INSERT sobre as tabelas nas quais os dados serão carregados.

Estágios da tabela

Cada tabela tem um estágio do Snowflake alocado a ela por padrão para armazenamento de arquivos. Esse estágio é uma opção conveniente se seus arquivos precisarem ser acessíveis a vários usuários e só precisarem ser copiados em uma única tabela.

Os estágios da tabela têm as seguintes características e limitações:

  • Os estágios da tabela têm o mesmo nome que a tabela; por exemplo, uma tabela chamada mytable tem um estágio referenciado como @%mytable.

  • Ao contrário dos estágios nomeados, os estágios da tabela não podem ser alterados ou descartados.

  • Os estágios da tabela não oferecem suporte à transformação de dados durante o carregamento (ou seja, usando uma consulta como fonte para o comando COPY).

Note que um estágio da tabela não é um objeto separado do banco de dados; ao contrário, ele é um estágio implícito ligado à própria tabela. Um estágio da tabela não tem privilégios próprios. Para o preparo de arquivos em um estágio de tabela, listar os arquivos, consultá-los no estágio ou descartá-los, você deve ser o proprietário da tabela (ter a função com o privilégio OWNERSHIP sobre a tabela).

Esta opção não é apropriada se você precisar copiar os dados nos arquivos em várias tabelas.

Estágios nomeados

Os estágios nomeados são objetos de banco de dados que proporcionam o maior grau de flexibilidade para o carregamento de dados:

  • Os usuários com os privilégios apropriados no estágio podem carregar dados em qualquer tabela.

  • Como o estágio é um objeto de banco de dados, aplicam-se as regras de segurança/acesso que se aplicam a todos os objetos. Os privilégios de usar um estágio podem ser concedidos ou revogados de funções. Além disso, a propriedade do estágio pode ser transferida para outra função.

Se você planeja preparar arquivos de dados que serão carregados apenas por você ou serão carregados somente em uma única tabela, talvez você prefira simplesmente usar seu estágio de usuário ou o estágio da tabela na qual você carregará dados.

Os estágios nomeados são opcionais mas recomendados quando você planeja carregamentos de dados regulares que podem envolver múltiplos usuários e/ou tabelas. Para instruções sobre como criar um estágio nomeado, consulte Criar um estágio nomeado abaixo.

Criação de um estágio nomeado

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

Nota

Você deve usar uma função que tenha recebido ou herdado o privilégio USAGE no banco de dados e no esquema que armazena o estágio e o privilégio CREATE STAGE no esquema.

Consulte Requisitos de controle de acesso para CREATE STAGE.

Criação de um estágio nomeado usando SQL

Use o comando CREATE STAGE para criar um estágio nomeado usando SQL.

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

CREATE OR REPLACE STAGE my_stage
  FILE_FORMAT = my_csv_format;
Copy

Nota

Ao especificar um objeto de formato de arquivo nomeado (ou opções individuais de formato de arquivo) para o estágio, não é necessário especificar posteriormente as mesmas opções de formato de arquivo no comando COPY usado para carregar dados do estágio.

O exemplo a seguir cria um estágio interno que especifica opções de formato de arquivo ad hoc em vez de fazer referência a um formato de arquivo nomeado. Os arquivos de dados nesse estágio têm um formato CSV e um delimitador de campo de canal (|). Quando esse estágio é referenciado, o comando COPY ignora a primeira linha nos arquivos de dados:

CREATE OR REPLACE STAGE my_stage
  file_format = (type = 'CSV' FIELD_DELIMITER = '|' SKIP_HEADER = 1);
Copy

Criação de um estágio nomeado usando Snowsight

Para usar Snowsight para criar um estágio interno nomeado, faça o seguinte:

  1. Entre em Snowsight.

  2. Selecione Data » Databases.

  3. Selecione o banco de dados e o esquema no qual você deseja criar um estágio.

  4. Selecione Create » Stage » Snowflake Managed.

  5. Insira um Stage Name.

  6. Opcionalmente, desmarque Directory table. As tabelas de diretório permitem que você veja os arquivos no estágio, mas exigem um warehouse e, portanto, têm um custo. Você pode optar por desmarcar essa opção por enquanto e ativar uma tabela de diretórios posteriormente.

  7. Selecione o tipo de Encryption compatível com todos os arquivos do seu estágio. Para obter detalhes, consulte criptografia para estágios internos. Você não pode alterar o tipo de criptografia depois de criar o estágio.

    Nota

    Para ativar o acesso aos dados, recomendamos que você selecione a criptografia no lado do servidor. Caso contrário, os arquivos preparados serão criptografados no lado do cliente por padrão e ilegíveis quando baixados. Para obter mais informações, consulte Criptografia do lado do servidor para acesso a dados não estruturados.

  8. Preencha os campos para descrever seu estágio. Para obter mais informações, consulte CREATE STAGE.

  9. Selecione Create.

Criação de um estágio nomeado usando o Console clássico

Selecione Databases Databases tab » <nome_bd> » Stages.

Próximo: Preparação de arquivos de dados de um sistema de arquivo local