REMOVE

Remove arquivos de um estágio externo (armazenamento em nuvem externo) ou interno (ou seja, Snowflake).

Para os estágios internos, são suportados os seguintes tipos de estágios:

  • Estágio interno nomeado

  • Estágio para uma tabela específica

  • Estágio do usuário atual

REMOVE pode ser abreviado como RM.

Consulte também:

LIST

Sintaxe

REMOVE { internalStage | externalStage } [ PATTERN = '<regex_pattern>' ]
Copy

Onde:

internalStage ::=
    @[<namespace>.]<int_stage_name>[/<path>]
  | @[<namespace>.]%<table_name>[/<path>]
  | @~[/<path>]
Copy
externalStage ::=
    @[<namespace>.]<ext_stage_name>[/<path>]
Copy

Parâmetros obrigatórios

internalStage | externalStage

Especifica o local onde os arquivos de dados são preparados:

@[namespace.]int_stage_name[/path]

Os arquivos estão no estágio interno nomeado especificado.

@[namespace.]ext_stage_name[/path]

Os arquivos estão no estágio externo nomeado especificado.

@[namespace.]%table_name[/path]

Os arquivos estão no estágio para a tabela especificada.

@~[/path]

Os arquivos estão no estágio para o usuário atual.

Onde:

  • namespace é o banco de dados e/ou esquema no qual se encontra a tabela ou o estágio interno. É opcional se um banco de dados e um esquema estiverem em uso atualmente na sessão; caso contrário, ele é obrigatório.

  • path é um caminho opcional que distingue letras maiúsculas de minúsculas para arquivos no local de armazenamento em nuvem (ou seja, os arquivos têm nomes que começam com uma cadeia de caracteres comum) que limita o acesso a um conjunto de arquivos. Os caminhos são chamados alternativamente de prefixos ou pastas por diferentes serviços de armazenamento em nuvem.

Nota

Se o nome do estágio ou caminho incluir espaços ou caracteres especiais, ele deve ser colocado entre aspas simples (por exemplo, '@"my stage"' para um estágio chamado "my stage").

Parâmetros opcionais

PATTERN = 'regex_pattern'

Especifica um padrão de expressão regular para a filtragem de arquivos a serem removidos. O comando lista todos os arquivos no path especificado e aplica o padrão de expressão regular em cada um dos arquivos encontrados.

Notas de uso

  • Se você estiver carregando dados de um arquivo em um estágio, não remova os arquivos preparados até que os dados tenham sido carregados com sucesso. Para verificar se os dados foram carregados com sucesso, use o comando COPY_HISTORY. Verifique a coluna STATUS para determinar se os dados do arquivo foram carregados. Observe que se o status for Load in progress, a remoção do arquivo preparado pode resultar em carregamentos parciais e perda de dados.

  • A remoção de arquivos de um estágio externo requer a concessão da seguinte função ou permissão ao Snowflake em sua conta de armazenamento em nuvem:

    Serviço de armazenamento em nuvem

    Função ou permissão

    Instruções

    Amazon S3

    s3:DeleteObject

    Configuração de acesso seguro ao Amazon S3

    Google Cloud Storage

    storage.objects.delete

    Configuração de uma integração para o Google Cloud Storage

    Microsoft Azure (Armazenamento de blobs)

    Storage Blob Data Contributor

    Configuração de um contêiner Azure para carregamento de dados

  • O comando remove todos os diretórios e arquivos que correspondem a um caminho especificado. Por exemplo, a seguinte instrução corresponderia a qualquer um dos seguintes objetos no estágio mytable da tabela:

    • myobject.csv.gz (arquivo)

    • myobject (diretório)

    • myobject_new (diretório)

    rm @%mytable/myobject;
    
    Copy
  • Para remover todos os arquivos de um diretório específico, inclua uma barra (/) no final do caminho. Por exemplo:

    rm @%mytable/myobject/;
    
    Copy
  • Não remova o diretório worksheet_data no estágio do usuário do Snowflake. A Classic Console armazena metadados para planilhas de trabalho na guia Worksheets Worksheet tab neste diretório. A remoção do diretório remove o acesso às planilhas, que não pode ser restaurado.

    Note que esta precaução não se aplica a planilhas em Snowsight, que são armazenadas em outro lugar e não são propensas à exclusão acidental.

  • Se uma instrução REMOVE for interrompida antes de completar a execução, quaisquer arquivos já removidos pela instrução não serão restaurados.

Exemplos

Remover todos os arquivos do caminho path1/subpath2 em um estágio interno chamado mystage:

REMOVE @mystage/path1/subpath2;
Copy

Remover todos os arquivos do estágio para a tabela orders:

REMOVE @%orders;
Copy

Use a forma abreviada do comando para remover arquivos cujos nomes correspondem ao padrão *jun* do estágio para o usuário atual:

RM @~ pattern='.*jun.*';
Copy