COPY INTO <local>

Descarrega os dados de uma tabela (ou consulta) em um ou mais arquivos em um dos seguintes locais:

  • Estágio interno nomeado (ou estágio de tabela/usuário). Os arquivos podem então ser baixados do estágio/local usando o comando GET.

  • Estágio externo nomeado que faz referência a um local externo (Amazon S3, Google Cloud Storage ou Microsoft Azure).

  • Local externo (Amazon S3, Google Cloud Storage ou Microsoft Azure).

Consulte também:

COPY INTO <tabela>

Sintaxe

COPY INTO { internalStage | externalStage | externalLocation }
     FROM { [<namespace>.]<table_name> | ( <query> ) }
[ PARTITION BY <expr> ]
[ FILE_FORMAT = ( { FORMAT_NAME = '[<namespace>.]<file_format_name>' |
                    TYPE = { CSV | JSON | PARQUET } [ formatTypeOptions ] } ) ]
[ copyOptions ]
[ VALIDATION_MODE = RETURN_ROWS ]
[ HEADER ]
Copy

Onde:

internalStage ::=
    @[<namespace>.]<int_stage_name>[/<path>]
  | @[<namespace>.]%<table_name>[/<path>]
  | @~[/<path>]
Copy
externalStage ::=
  @[<namespace>.]<ext_stage_name>[/<path>]
Copy
externalLocation (for Amazon S3) ::=
  's3://<bucket>[/<path>]'
  [ { STORAGE_INTEGRATION = <integration_name> } | { CREDENTIALS = ( {  { AWS_KEY_ID = '<string>' AWS_SECRET_KEY = '<string>' [ AWS_TOKEN = '<string>' ] } } ) } ]
  [ ENCRYPTION = ( [ TYPE = 'AWS_CSE' ] [ MASTER_KEY = '<string>' ] |
                   [ TYPE = 'AWS_SSE_S3' ] |
                   [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] |
                   [ TYPE = 'NONE' ] ) ]
Copy
externalLocation (for Google Cloud Storage) ::=
  'gcs://<bucket>[/<path>]'
  [ STORAGE_INTEGRATION = <integration_name> ]
  [ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '<string>' ] | [ TYPE = 'NONE' ] ) ]
Copy
externalLocation (for Microsoft Azure) ::=
  'azure://<account>.blob.core.windows.net/<container>[/<path>]'
  [ { STORAGE_INTEGRATION = <integration_name> } | { CREDENTIALS = ( [ AZURE_SAS_TOKEN = '<string>' ] ) } ]
  [ ENCRYPTION = ( [ TYPE = { 'AZURE_CSE' | 'NONE' } ] [ MASTER_KEY = '<string>' ] ) ]
Copy
formatTypeOptions ::=
-- If FILE_FORMAT = ( TYPE = CSV ... )
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     RECORD_DELIMITER = '<character>' | NONE
     FIELD_DELIMITER = '<character>' | NONE
     FILE_EXTENSION = '<string>'
     ESCAPE = '<character>' | NONE
     ESCAPE_UNENCLOSED_FIELD = '<character>' | NONE
     DATE_FORMAT = '<string>' | AUTO
     TIME_FORMAT = '<string>' | AUTO
     TIMESTAMP_FORMAT = '<string>' | AUTO
     BINARY_FORMAT = HEX | BASE64 | UTF8
     FIELD_OPTIONALLY_ENCLOSED_BY = '<character>' | NONE
     NULL_IF = ( '<string1>' [ , '<string2>' , ... ] )
     EMPTY_FIELD_AS_NULL = TRUE | FALSE
-- If FILE_FORMAT = ( TYPE = JSON ... )
     COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE
     FILE_EXTENSION = '<string>'
-- If FILE_FORMAT = ( TYPE = PARQUET ... )
     COMPRESSION = AUTO | LZO | SNAPPY | NONE
     SNAPPY_COMPRESSION = TRUE | FALSE
Copy
copyOptions ::=
     OVERWRITE = TRUE | FALSE
     SINGLE = TRUE | FALSE
     MAX_FILE_SIZE = <num>
     INCLUDE_QUERY_ID = TRUE | FALSE
     DETAILED_OUTPUT = TRUE | FALSE
Copy

Parâmetros obrigatórios

INTO ...

Especifica o local interno ou externo onde os arquivos de dados são descarregados:

@[namespace.]int_stage_name[/path]

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

@[namespace.]ext_stage_name[/path]

Os arquivos são descarregados no estágio externo especificado.

@[namespace.]%table_name[/path]

Os arquivos são descarregados no estágio da tabela especificada.

@~[/path]

Os arquivos são descarregados no estágio do usuário atual.

's3://bucket[/path]'

Os arquivos são descarregados no local externo especificado (bucket S3). Parâmetros adicionais podem ser necessários. Para obter mais detalhes, consulte Parâmetros adicionais do provedor de nuvem (neste tópico).

'gcs://bucket[/path]'

Os arquivos são descarregados no local externo especificado (bucket do Google Cloud Storage). Parâmetros adicionais podem ser necessários. Para obter mais detalhes, consulte Parâmetros adicionais do provedor de nuvem (neste tópico).

'azure://account.blob.core.windows.net/container[/path]'

Os arquivos são descarregados no local externo especificado (contêiner Azure). Parâmetros adicionais podem ser necessários. Para obter mais detalhes, consulte Parâmetros adicionais do provedor de nuvem (neste tópico).

Onde:

  • namespace é o banco de dados e/ou esquema no qual está o estágio interno ou externo, na forma de database_name.schema_name ou schema_name. É opcional se um banco de dados e um esquema estiverem em uso atualmente dentro da sessão do usuário; caso contrário, ele é obrigatório.

  • O parâmetro opcional path especifica uma pasta e um prefixo de nome de arquivo para o(s) arquivo(s) com dados descarregados. Se um prefixo de nome de arquivo não estiver incluído em path ou se o parâmetro PARTITION BY for especificado, os nomes de arquivo para os arquivos de dados gerados recebem o prefixo data_.

    Os modificadores de caminhos relativos, como /./ e /../, são interpretados literalmente, porque “caminhos” são prefixos literais para um nome. Por exemplo:

    -- S3 bucket
    COPY INTO 's3://mybucket/./../a.csv' FROM mytable;
    
    -- Google Cloud Storage bucket
    COPY INTO 'gcs://mybucket/./../a.csv' FROM mytable;
    
    -- Azure container
    COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/./../a.csv' FROM mytable;
    
    Copy

    Nessas instruções COPY, o Snowflake cria um arquivo que é literalmente chamado ./../a.csv no local de armazenamento.

Nota

  • Se o estágio interno ou externo ou o nome do caminho incluir caracteres especiais, incluindo espaços, delimite a cadeia de caracteres INTO ... com aspas simples.

  • O valor INTO ... deve ser uma constante literal. O valor não pode ser uma variável SQL.

FROM ...

Especifica a fonte dos dados a serem descarregados, que pode ser uma tabela ou uma consulta:

[namespace.]table_name

Especifica o nome da tabela da qual os dados são descarregados.

O namespace especifica opcionalmente o banco de dados e/ou esquema no qual a tabela reside, na forma de database_name.schema_name ou schema_name. É opcional se um banco de dados e um esquema estiverem em uso atualmente dentro da sessão do usuário; caso contrário, ele é obrigatório.

( query )

Instrução SELECT que devolve dados a serem descarregados em arquivos. Você pode limitar o número de linhas devolvidas especificando uma cláusula LIMIT / FETCH na consulta.

Nota

Ao converter valores de coluna em um dados usando a função CAST , ::, verifique se o tipo de dados oferece suporte a todos os valores de coluna. Valores muito longos para o tipo de dados especificado poderiam ser truncados.

Parâmetros adicionais do provedor de nuvem

STORAGE_INTEGRATION = integration_name ou . CREDENTIALS = ( cloud_specific_credentials )

Suportado quando a instrução COPY especifica um URI de armazenamento externo em vez de um nome do estágio externo para o local de armazenamento em nuvem de destino. Especifica as credenciais de segurança para conexão com o provedor de nuvem e acesso ao contêiner de armazenamento privado onde os arquivos descarregados são preparados.

Necessário apenas para descarregamento em um local externo de armazenamento privado em nuvem; não necessário para buckets/contêineres públicos

Amazon S3

STORAGE_INTEGRATION = integration_name

Especifica o nome da integração de armazenamento utilizada para delegar a responsabilidade de autenticação do armazenamento em nuvem externo a uma entidade de gerenciamento de identidade e acesso (IAM) do Snowflake. Para obter mais detalhes, consulte CREATE STORAGE INTEGRATION.

Nota

Recomendamos fortemente o uso de integrações de armazenamento. Esta opção evita a necessidade de fornecer credenciais de armazenamento em nuvem usando o parâmetro CREDENTIALS ao criar estágios ou carregar dados.

CREDENTIALS = ( AWS_KEY_ID = 'string' AWS_SECRET_KEY = 'string' [ AWS_TOKEN = 'string' ] ) ou . CREDENTIALS = ( AWS_ROLE = 'string' )

Especifica as credenciais de segurança para conexão com AWS e acesso ao bucket privado S3 onde os arquivos descarregados são preparados. Para obter mais informações, consulte Configuração de acesso seguro ao Amazon S3.

As credenciais especificadas dependerão da associação das permissões de acesso do Snowflake para o bucket com um usuário ou função do AWS IAM (Identity & Access Management):

  • Usuário IAM: credenciais temporárias de IAM são necessárias. As credenciais temporárias (também conhecidas como «com escopo») são geradas por AWS Security Token Service (STS) e consiste em três componentes:

    • AWS_KEY_ID

    • AWS_SECRET_KEY

    • AWS_TOKEN

    Todos os três são obrigatórios para acessar um bucket privado. Após um período designado, as credenciais temporárias expiram e não podem mais ser utilizadas. Você deve então gerar um novo conjunto de credenciais temporárias válidas.

    Importante

    Os comandos COPY possuem uma sintaxe complexa e informações sensíveis, tais como credenciais. Além disso, elas são executadas com frequência e são geralmente armazenadas em scripts ou planilhas, o que pode fazer com que informações sensíveis sejam inadvertidamente expostas. O comando COPY permite o uso de credenciais permanentes (ou «de longo prazo»); no entanto, por razões de segurança, não use credenciais permanentes nos comandos COPY. Em vez disso, use credenciais temporárias.

    Se você tiver que usar credenciais permanentes, use estágios externos, para os quais as credenciais são inseridas uma vez e armazenadas com segurança, minimizando o potencial de exposição.

  • Função IAM: omitir as credenciais de segurança e chaves de acesso e, em vez disso, identificar a função usando AWS_ROLE e especificar a função AWS ARN (Amazon Resource Name).

    Importante

    A capacidade de usar uma função AWS IAM para acessar um bucket S3 privado para carregar ou descarregar dados está agora obsoleta (ou seja, o suporte será removido em um lançamento futuro, TBD). É altamente recomendável modificar qualquer estágio S3 existente que utilize este recurso para, em vez disso, fazer referência a objetos de integração de armazenamento. Para obter instruções, consulte Opção 1: configuração de uma integração de armazenamento do Snowflake para acessar o Amazon S3.

Google Cloud Storage

STORAGE_INTEGRATION = integration_name

Especifica o nome da integração de armazenamento utilizada para delegar a responsabilidade de autenticação do armazenamento em nuvem externo a uma entidade de gerenciamento de identidade e acesso (IAM) do Snowflake. Para obter mais detalhes, consulte CREATE STORAGE INTEGRATION.

Microsoft Azure

STORAGE_INTEGRATION = integration_name

Especifica o nome da integração de armazenamento utilizada para delegar a responsabilidade de autenticação do armazenamento em nuvem externo a uma entidade de gerenciamento de identidade e acesso (IAM) do Snowflake. Para obter mais detalhes, consulte CREATE STORAGE INTEGRATION.

Nota

Recomendamos fortemente o uso de integrações de armazenamento. Esta opção evita a necessidade de fornecer credenciais de armazenamento em nuvem usando o parâmetro CREDENTIALS ao criar estágios ou carregar dados.

CREDENTIALS = ( AZURE_SAS_TOKEN = 'string' )

Especifica o token SAS (assinatura de acesso compartilhado) para conexão com o Azure e acesso ao contêiner privado onde os arquivos contendo os dados são preparados. As credenciais são geradas pelo Azure.

ENCRYPTION = ( cloud_specific_encryption )

Para uso em instruções COPY ad hoc (instruções que não fazem referência a um estágio externo nomeado). Exigido apenas para descarregar dados em arquivos em locais de armazenamento criptografados

Amazon S3

ENCRYPTION = ( [ TYPE = 'AWS_CSE' ] [ MASTER_KEY = '<string>' ] | [ TYPE = 'AWS_SSE_S3' ] | [ TYPE = 'AWS_SSE_KMS' [ KMS_KEY_ID = '<string>' ] ] | [ TYPE = 'NONE' ] )

TYPE = ...

Especifica o tipo de criptografia utilizado. Os valores possíveis são:

  • AWS_CSE: criptografia do lado do cliente (exige um valor MASTER_KEY). Atualmente, a chave mestra do lado do cliente que você fornece só pode ser uma chave simétrica. Note que, quando um valor MASTER_KEY é fornecido, o Snowflake assume TYPE = AWS_CSE (ou seja, quando um valor MASTER_KEY é fornecido, TYPE não é necessário).

  • AWS_SSE_S3: criptografia do lado do servidor que não exige configurações adicionais de criptografia.

  • AWS_SSE_KMS: criptografia do lado do servidor que aceita um valor opcional KMS_KEY_ID.

Para obter mais informações sobre os tipos de criptografia, consulte a documentação do AWS sobre criptografia do lado do cliente ou criptografia do lado do servidor.

  • NONE: sem criptografia.

MASTER_KEY = 'string' (aplica-se somente à criptografia AWS_CSE)

Especifica a chave mestra do lado do cliente utilizada para criptografar os arquivos no bucket. A chave mestra deve ser uma chave de 128 bits ou 256 bits na forma codificada em Base64.

KMS_KEY_ID = 'string' (aplica-se somente à criptografia AWS_SSE_KMS)

Opcionalmente especifica a ID para a chave AWS gerenciada por KMS usada para criptografar arquivos descarregados no bucket. Se nenhum valor for fornecido, sua ID de chave KMS é usada para criptografar arquivos ao descarregar.

Observe que este valor é ignorado para o carregamento de dados.

Google Cloud Storage

ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' | 'NONE' ] [ KMS_KEY_ID = 'string' ] )

TYPE = ...

Especifica o tipo de criptografia utilizado. Os valores possíveis são:

KMS_KEY_ID = 'string' (aplica-se somente à criptografia GCS_SSE_KMS)

Opcionalmente, especifica a ID da chave gerenciada por KMS da nuvem que é usada para criptografar arquivos descarregados no bucket. Se nenhum valor for fornecido, sua ID de chave padrão KMS definida no bucket é usada para criptografar arquivos ao descarregar.

Observe que este valor é ignorado para o carregamento de dados. A operação de carregamento deve ser bem sucedida se a conta de serviço tiver permissões suficientes para descriptografar os dados no bucket.

Microsoft Azure

ENCRYPTION = ( [ TYPE = 'AZURE_CSE' | 'NONE' ] [ MASTER_KEY = 'string' ] )

TYPE = ...

Especifica o tipo de criptografia utilizado. Os valores possíveis são:

MASTER_KEY = 'string' (aplica-se somente à criptografia AZURE_CSE)

Especifica a chave mestra do lado do cliente usada para criptografar arquivos. A chave mestra deve ser uma chave de 128 bits ou 256 bits na forma codificada em Base64.

Parâmetros opcionais

PARTITION BY expr

Especifica uma expressão usada para dividir as linhas da tabela descarregadas em arquivos separados. Oferece suporte a qualquer expressão SQL que avalia como uma cadeia de caracteres.

A operação de descarregamento divide as linhas da tabela com base na expressão da partição e determina o número de arquivos a serem criados com base na quantidade de dados e no número de operações paralelas, distribuídas entre os recursos de computação no warehouse.

Os nomes de arquivo contam com o prefixo data_ e incluem os valores da coluna de partição. Os nomes de arquivos individuais em cada partição são identificados com um identificador universalmente único (UUID). O UUID é a ID de consulta da instrução COPY usada para descarregar os arquivos de dados.

Cuidado

As instruções COPY INTO <local> gravam valores de colunas de partição nos nomes dos arquivos descarregados. Recomendamos fortemente a partição de seus dados em tipos de dados comuns, tais como datas ou carimbos de data/hora, em vez de valores de cadeia de caracteres ou inteiros potencialmente sensíveis.

Note que os URLs do arquivo estão incluídos nos registros internos que o Snowflake mantém para ajudar na depuração de problemas quando os clientes criam casos de suporte. Como resultado, os dados em colunas referenciadas em uma expressão PARTITION BY também são armazenados indiretamente em logs internos. Esses registros podem ser processados fora de sua região de implantação. Portanto, como prática recomendada, inclua apenas datas, carimbos de data/hora e tipos de dados booleanos em expressões PARTITION BY.

Se você preferir desativar o parâmetro PARTITION BY na instrução COPY INTO <local> de sua conta, entre em contato com o suporte Snowflake.

Note que o Snowflake fornece um conjunto de parâmetros para restringir ainda mais as operações de descarregamento de dados:

  • PREVENT_UNLOAD_TO_INLINE_URL impede operações de descarregamento de dados ad hoc em locais externos de armazenamento em nuvem (ou seja, instruções COPY INTO <local> que especificam o URL do armazenamento em nuvem e configurações de acesso diretamente na instrução).

  • PREVENT_UNLOAD_TO_INTERNAL_STAGES impede operações de descarregamento de dados em qualquer estágio interno, incluindo estágios de usuário, estágios de tabela ou estágios internos nomeados.

Para um exemplo, consulte Particionamento de linhas descarregadas para arquivos Parquet (neste tópico).

Nota

  • Os seguintes valores de opção de cópia não são suportados em combinação com PARTITION BY:

    • OVERWRITE = TRUE

    • SINGLE = TRUE

    • INCLUDE_QUERY_ID = FALSE

  • A inclusão da cláusula ORDER BY na instrução SQL em combinação com PARTITION BY não garante que a ordem especificada seja preservada nos arquivos descarregados.

  • Se a expressão PARTITION BY avalia como NULL, o caminho da partição no nome do arquivo de saída é _NULL_ (por exemplo, mystage/_NULL_/data_01234567-0123-1234-0000-000000001234_01_0_0.snappy.parquet).

  • Ao descarregar em arquivos do tipo PARQUET:

    • Pequenos arquivos de dados descarregados por threads de execução paralela são fundidos automaticamente em um único arquivo que corresponde ao valor da opção de cópia MAX_FILE_SIZE o máximo possível.

    • Todos os grupos de linhas possuem 128 MB de tamanho. Um grupo de linhas é uma partição horizontal lógica dos dados em linhas. Não há uma estrutura física garantida para um grupo de linhas. Um grupo de linhas consiste em uma parte de coluna para cada coluna do conjunto de dados.

    • A operação de descarregamento tenta produzir arquivos no tamanho mais próximo possível da configuração da opção de cópia MAX_FILE_SIZE. O valor padrão para esta opção de cópia é 16 MB. Note que este comportamento se aplica somente ao descarregar dados em arquivos Parquet.

    • As colunas VARIANT são convertidas em cadeias de caracteres JSON simples. Converter os valores em uma matriz (usando a função TO_ARRAY) resulta em uma matriz de cadeias de caracteres JSON.

  • Não há opção de omitir as colunas na expressão da partição dos arquivos de dados descarregados.

FILE_FORMAT = ( FORMAT_NAME = 'file_format_name' ) ou . FILE_FORMAT = ( TYPE = CSV | JSON | PARQUET [ ... ] )

Especifica o formato dos arquivos de dados contendo os dados descarregados:

FORMAT_NAME = 'file_format_name'

Especifica um formato de arquivo nomeado existente a ser usado para descarregar os dados da tabela. O formato do arquivo nomeado determina o tipo de formato (CSV, JSON, PARQUET), bem como quaisquer outras opções de formato, para os arquivos de dados. Para obter mais informações, consulte CREATE FILE FORMAT.

TYPE = CSV | JSON | PARQUET [ ... ]

Especifica o tipo de arquivos descarregados da tabela.

Se um tipo de formato for especificado, opções adicionais específicas de formato podem ser determinadas. Para obter mais detalhes, consulte Opções do tipo de formato (neste tópico).

Nota

  • JSON só pode ser usado para descarregar dados de colunas do tipo VARIANT (ou seja, colunas contendo dados JSON).

  • Atualmente, os dados aninhados em colunas VARIANT não podem ser descarregados com sucesso no formato Parquet.

copyOptions

Especifica uma ou mais opções de cópia para os dados descarregados. Para obter mais detalhes, consulte Opções de cópia (neste tópico).

VALIDATION_MODE = RETURN_ROWS

Cadeia de caracteres (constante) que instrui o comando COPY a retornar os resultados da consulta na instrução SQL em vez de descarregar os resultados no local de armazenamento em nuvem especificado. A única opção de validação suportada é RETURN_ROWS. Esta opção retorna todas as linhas produzidas pela consulta.

Quando você tiver validado a consulta, poderá remover o VALIDATION_MODE para realizar a operação de descarregamento.

HEADER = TRUE | FALSE

Especifica se os títulos das colunas da tabela devem ser incluídos nos arquivos de saída.

  • Defina esta opção como TRUE para incluir os títulos das colunas da tabela nos arquivos de saída.

    Observe que se a operação COPY descarrega os dados em múltiplos arquivos, os títulos das colunas estão incluídos em todos os arquivos.

    Ao descarregar os dados em formato Parquet, os nomes das colunas da tabela são mantidos nos arquivos de saída.

  • Defina esta opção como FALSE para especificar o seguinte comportamento:

    CSV:

    Não inclua os títulos das colunas das tabelas nos arquivos de saída.

    Parquet:

    Incluir títulos genéricos de colunas (por exemplo, col1, col2 etc.) nos arquivos de saída.

Padrão: FALSE

Opções de tipo de formato (formatTypeOptions)

Dependendo do tipo de formato de arquivo especificado (FILE_FORMAT = ( TYPE = ... )), você pode incluir uma ou mais das seguintes opções de formato específicas (separadas por espaços em branco, vírgulas ou novas linhas):

TYPE = CSV

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE

Cadeia de caracteres (constante) que especifica a compressão dos arquivos de dados descarregados usando o algoritmo de compressão especificado.

Valores suportados

Notas

AUTO

Os arquivos descarregados são automaticamente comprimidos usando o padrão, que é o gzip.

GZIP

BZ2

BROTLI

Deve ser especificado ao carregar arquivos comprimidos com Brotli.

ZSTD

Zstandard v0.8 (e superior) suportado.

DEFLATE

Os arquivos descarregados são comprimidos usando Deflate (com cabeçalho zlib, RFC1950).

RAW_DEFLATE

Os arquivos descarregados são comprimidos usando Raw Deflate (sem cabeçalho, RFC1951).

NONE

Os arquivos descarregados não são comprimidos.

Padrão: AUTO

RECORD_DELIMITER = 'character' | NONE

Um ou mais caracteres de byte único ou multibyte que separam registros em um arquivo descarregado. Aceita sequências de escape comuns ou os seguintes caracteres de byte único ou multibyte:

Caracteres de byte único:

Valores octais (com prefixo \\) ou valores hexadecimais (com prefixo 0x ou \x). Por exemplo, para registros delimitados por acento circunflexo (^), especifique o valor octal (\\136) ou hexadecimal (0x5e).

Caracteres multibyte:

Valores hexadecimais (com prefixo \x). Por exemplo, para registros delimitados pelo caractere de centavo (¢), especifique o valor hexadecimal (\xC2\xA2).

O delimitador para RECORD_DELIMITER ou FIELD_DELIMITER não pode ser um substrato do delimitador para a outra opção de formato do arquivo (por exemplo, FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb').

O delimitador especificado deve ser um caractere válido UTF-8 e não uma sequência aleatória de bytes. Observe também que o delimitador é limitado a um máximo de 20 caracteres.

Também aceita um valor de NONE.

Padrão: caractere de nova linha Note que «nova linha» é lógica de tal forma que \r\n é entendido como uma nova linha para arquivos em uma plataforma Windows.

FIELD_DELIMITER = 'character' | NONE

Um ou mais caracteres de byte único ou multibyte que separam campos em um arquivo descarregado. Aceita sequências de escape comuns ou os seguintes caracteres de byte único ou multibyte:

Caracteres de byte único:

Valores octais (com prefixo \\) ou valores hexadecimais (com prefixo 0x ou \x). Por exemplo, para registros delimitados por acento circunflexo (^), especifique o valor octal (\\136) ou hexadecimal (0x5e).

Caracteres multibyte:

Valores hexadecimais (com prefixo \x). Por exemplo, para registros delimitados pelo caractere de centavo (¢), especifique o valor hexadecimal (\xC2\xA2).

O delimitador para RECORD_DELIMITER ou FIELD_DELIMITER não pode ser um substrato do delimitador para a outra opção de formato do arquivo (por exemplo, FIELD_DELIMITER = 'aa' RECORD_DELIMITER = 'aabb').

Nota

Para caracteres não ASCII, você deve usar o valor da sequência de bytes hexadecimais para obter um comportamento determinístico.

O delimitador especificado deve ser um caractere válido UTF-8 e não uma sequência aleatória de bytes. Observe também que o delimitador é limitado a um máximo de 20 caracteres.

Também aceita um valor de NONE.

Padrão: vírgula (,)

FILE_EXTENSION = 'string' | NONE

Cadeia de caracteres que especifica a extensão dos arquivos descarregados em um estágio. Aceita qualquer extensão. O usuário é responsável por especificar uma extensão de arquivo válida que possa ser lida pelo software ou serviço desejado.

Nota

Se a opção de cópia SINGLE for TRUE, então o comando COPY descarrega um arquivo sem uma extensão de arquivo por padrão. Para especificar uma extensão de arquivo, forneça um nome de arquivo e uma extensão no caminho internal_location ou external_location. Por exemplo:

copy into @stage/data.csv ...

Padrão: nulo, o que significa que a extensão do arquivo é determinada pelo tipo de formato, por exemplo, .csv[compression], em que compression é a extensão adicionada pelo método de compressão, se COMPRESSION estiver definido.

DATE_FORMAT = 'string' | AUTO

Cadeia de caracteres que define o formato dos valores de data nos arquivos de dados descarregados. Se um valor não for especificado ou for definido como AUTO, o valor do parâmetro DATE_OUTPUT_FORMAT é usado.

Padrão: AUTO

TIME_FORMAT = 'string' | AUTO

Cadeia de caracteres que define o formato dos valores de tempo nos arquivos de dados descarregados. Se um valor não for especificado ou for definido como AUTO, o valor do parâmetro TIME_OUTPUT_FORMAT é usado.

Padrão: AUTO

TIMESTAMP_FORMAT = 'string' | AUTO

Cadeia de caracteres que define o formato dos valores dos carimbos de data/hora nos arquivos de dados descarregados. Se um valor não for especificado ou for definido como AUTO, o valor do parâmetro TIMESTAMP_OUTPUT_FORMAT é usado.

Padrão: AUTO

BINARY_FORMAT = HEX | BASE64 | UTF8

Cadeia de caracteres (constante) que define o formato de codificação da saída binária. A opção pode ser usada ao descarregar dados de colunas binárias em uma tabela.

Padrão: HEX

ESCAPE = 'character' | NONE
Uso:

Carregamento e descarregamento de dados

Definição:

Uma cadeia de caracteres de caractere de byte único usada como caractere de escape para valores de campo delimitados ou não delimitados. Um caractere de escape invoca uma interpretação alternativa em caracteres subsequentes em uma sequência de caracteres. Você pode usar o caractere ESCAPE para interpretar instâncias do caractere FIELD_OPTIONALLY_ENCLOSED_BY nos dados como literais. O caractere de escape também pode ser usado para escapar de instâncias de si mesmo nos dados.

Aceita sequências de escape comuns, valores octais ou valores hexadecimais.

Especifique o caractere usado para delimitar os campos definindo FIELD_OPTIONALLY_ENCLOSED_BY.

Se esta opção for definida, ela substitui o conjunto de caracteres de escape para ESCAPE_UNENCLOSED_FIELD.

Padrão:

NONE

ESCAPE_UNENCLOSED_FIELD = 'character' | NONE
Uso:

Carregamento e descarregamento de dados

Definição:

Uma cadeia de caracteres de caractere de byte único usada como caractere de escape apenas para valores de campo não delimitados. Um caractere de escape invoca uma interpretação alternativa em caracteres subsequentes em uma sequência de caracteres. Você pode usar o caractere ESCAPE para interpretar instâncias dos caracteres FIELD_DELIMITER ou RECORD_DELIMITER nos dados como literais. O caractere de escape também pode ser usado para escapar de instâncias de si mesmo nos dados.

Aceita sequências de escape comuns, valores octais ou valores hexadecimais.

Se ESCAPE estiver definido, o conjunto de caracteres de escape para aquela opção de formato de arquivo substitui esta opção.

Padrão:

barra invertida (\\)

FIELD_OPTIONALLY_ENCLOSED_BY = 'character' | NONE

Caractere usado para delimitar as cadeias de caracteres. O valor pode ser NONE, caractere de aspas simples (') ou caractere de aspas duplas ("). Para usar o caractere de aspas simples, use a representação octal ou hexadecimal (0x27) ou o escape de aspas simples dupla ('').

Quando um campo contém este caractere, aplique o escape usando o mesmo caractere. Por exemplo, se o valor for o caractere de aspas duplas e um campo tiver a cadeia de caracteres A "B" C, aplique o escape das aspas duplas como segue:

A ""B"" C

Padrão: NONE

NULL_IF = ( 'string1' [ , 'string2' ... ] )

Cadeia de caracteres usada para converter de SQL NULL. O Snowflake converte os valores SQL NULL no primeiro valor da lista.

Padrão: \N (ou seja, NULL, assumindo ESCAPE_UNENCLOSED_FIELD=\)

EMPTY_FIELD_AS_NULL = TRUE | FALSE

Usado em combinação com FIELD_OPTIONALLY_ENCLOSED_BY. Quando FIELD_OPTIONALLY_ENCLOSED_BY = NONE, a definição de EMPTY_FIELD_AS_NULL = FALSE especifica para descarregar cadeias de caracteres vazias em tabelas para valores de cadeias de caracteres vazias sem aspas delimitando os valores de campo.

Se definido como TRUE, FIELD_OPTIONALLY_ENCLOSED_BY deve especificar um caractere para delimitar cadeias de caracteres.

Padrão: TRUE

TYPE = JSON

COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | NONE

Cadeia de caracteres (constante). Comprime o arquivo de dados usando o algoritmo de compressão especificado.

Valores suportados

Notas

AUTO

Os arquivos descarregados são automaticamente comprimidos usando o padrão, que é o gzip.

GZIP

BZ2

BROTLI

ZSTD

DEFLATE

Os arquivos descarregados são comprimidos usando Deflate (com cabeçalho zlib, RFC1950).

RAW_DEFLATE

Os arquivos descarregados são comprimidos usando Raw Deflate (sem cabeçalho, RFC1951).

NONE

Os arquivos descarregados não são comprimidos.

Padrão: AUTO

FILE_EXTENSION = 'string' | NONE

Cadeia de caracteres que especifica a extensão dos arquivos descarregados em um estágio. Aceita qualquer extensão. O usuário é responsável por especificar uma extensão de arquivo válida que possa ser lida pelo software ou serviço desejado.

Padrão: nulo, o que significa que a extensão do arquivo é determinada pelo tipo de formato (por exemplo, .csv[compression]) em que compression é a extensão adicionada pelo método de compressão, se COMPRESSION estiver definido.

TYPE = PARQUET

COMPRESSION = AUTO | LZO | SNAPPY | NONE

Cadeia de caracteres (constante). Comprime o arquivo de dados usando o algoritmo de compressão especificado.

Valores suportados

Notas

AUTO

Os arquivos são comprimidos usando Snappy, o algoritmo de compressão padrão.

LZO

Os arquivos são comprimidos usando o algoritmo Snappy por padrão. Se, em vez disso, for aplicada a compressão Lempel-Ziv-Oberhumer (LZO), especificar este valor.

SNAPPY

Os arquivos são comprimidos usando o algoritmo Snappy por padrão. Opcionalmente, você pode especificar este valor.

NONE

Especifica que os arquivos descarregados não são comprimidos.

Padrão: AUTO

SNAPPY_COMPRESSION = TRUE | FALSE

Booleano que especifica se o(s) arquivo(s) descarregado(s) é(são) comprimido(s) usando o algoritmo SNAPPY.

Nota

Obsoleto. Em vez disso, use COMPRESSION = SNAPPY.

Padrão: TRUE

Opções de cópia (copyOptions)

Você pode especificar uma ou mais das seguintes opções de cópia (separadas por espaços em branco, vírgulas ou novas linhas):

OVERWRITE = TRUE | FALSE
Definição:

Booleano que especifica se o comando COPY substitui arquivos existentes com nomes correspondentes, se houver, no local onde os arquivos são armazenados. A opção não remove qualquer arquivo existente que não corresponda aos nomes dos arquivos que o comando COPY descarrega.

Em muitos casos, ativar esta opção ajuda a evitar a duplicação de dados no estágio de destino quando a mesma instrução COPY INTO <local> é executada várias vezes. No entanto, quando uma operação de descarregamento grava vários arquivos em um estágio, o Snowflake adiciona um sufixo que garante que cada nome de arquivo seja único nos threads de execução paralela (por exemplo, data_0_1_0). O número de threads de execução paralela pode variar entre as operações de descarregamento. Se os arquivos gravados por uma operação de descarregamento não tiverem os mesmos nomes de arquivos que os arquivos gravados por uma operação anterior, as instruções SQL que incluem esta opção de cópia não poderão substituir os arquivos existentes, resultando em arquivos duplicados.

Além disso, no caso raro de falha de uma máquina ou de uma rede, o trabalho de descarregamento é testado novamente. Nesse cenário, a operação de descarregamento grava arquivos adicionais no estágio sem antes remover quaisquer arquivos que tenham sido gravados anteriormente na primeira tentativa.

Para evitar duplicação de dados no estágio de destino, recomendamos definir a opção de cópia INCLUDE_QUERY_ID = TRUE em vez de OVERWRITE = TRUE e remover todos os arquivos de dados no estágio de destino e caminho (ou usar um caminho diferente para cada operação de descarregamento) entre cada trabalho de descarregamento.

Padrão:

FALSE

SINGLE = TRUE | FALSE
Definição:

Booleano que especifica se deve ser gerado um único arquivo ou vários arquivos. Se FALSE, um prefixo de nome de arquivo deve ser incluído em path.

Importante

Se SINGLE = TRUE, então COPY ignora a opção de formato de arquivo FILE_EXTENSION e emite um arquivo com nome simples dados. Para especificar uma extensão de arquivo, forneça um nome de arquivo e uma extensão no local interno ou externo path. Por exemplo:

COPY INTO @mystage/data.csv ...
Copy

Além disso, se a opção do formato de arquivo COMPRESSION também estiver explicitamente definida como um dos algoritmos de compressão suportados (por exemplo, GZIP), então o local interno ou externo especificado path deve terminar em um nome de arquivo com a extensão correspondente (por exemplo, gz) para que o arquivo possa ser descomprimido usando a ferramenta apropriada. Por exemplo:

COPY INTO @mystage/data.gz ...

COPY INTO @mystage/data.csv.gz ...
Copy
Padrão:

FALSE

MAX_FILE_SIZE = num
Definição:

Número (> 0) que especifica o limite superior de tamanho (em bytes) de cada arquivo a ser gerado em paralelo por linha. Observe que o tamanho real do arquivo e o número de arquivos descarregados são determinados pela quantidade total de dados e pelo número de nós disponíveis para processamento paralelo.

O Snowflake utiliza a execução paralela para otimizar o desempenho. O número de threads não pode ser modificado.

Máximo: 5 GB (estágio do Amazon S3, Google Cloud Storage ou Microsoft Azure)

Nota

O comando COPY descarrega um conjunto de linhas de tabela de cada vez. Se você definir um valor MAX_FILE_SIZE muito baixo, a quantidade de dados em um conjunto de linhas pode exceder o tamanho especificado.

Padrão:

16777216 (16 MB)

INCLUDE_QUERY_ID = TRUE | FALSE
Definição:

Booleano que especifica se os arquivos descarregados devem ser identificados de forma única, incluindo um identificador único universal (UUID) nos nomes dos arquivos de dados descarregados. Esta opção ajuda a garantir que as instruções COPY simultâneas não substituam arquivos descarregados acidentalmente.

Valores:

Se TRUE, um UUID é adicionado aos nomes dos arquivos descarregados. O UUID é a ID de consulta da instrução COPY usada para descarregar os arquivos de dados. A UUID é um segmento do nome do arquivo: <caminho>/data_<uuid>_<nome>.<extensão>.

Se FALSE, então um UUID não é adicionado aos arquivos de dados descarregados.

Nota

  • INCLUDE_QUERY_ID = TRUE é o valor padrão da opção de cópia quando você divide as linhas da tabela descarregada em arquivos separados (definindo PARTITION BY expr na instrução COPY INTO <local>). Este valor não pode ser alterado para FALSE.

  • INCLUDE_QUERY_ID = TRUE não é suportado quando uma das seguintes opções de cópia é definida:

    • SINGLE = TRUE

    • OVERWRITE = TRUE

  • No caso raro de falha de uma máquina ou rede, o trabalho de descarregamento é testado novamente. Nesse cenário, a operação de descarregamento remove quaisquer arquivos que foram gravados no estágio com o UUID da ID de consulta atual e depois tenta descarregar os dados novamente. Quaisquer novos arquivos gravados no estágio possuem a ID de consulta repetida como o UUID.

Padrão:

FALSE

DETAILED_OUTPUT = TRUE | FALSE
Definição:

Booleano que especifica se a saída do comando deve descrever a operação de descarregamento ou os arquivos individuais descarregados como resultado da operação.

Valores:
  • Se TRUE, a saída do comando inclui uma linha para cada arquivo descarregado até o estágio especificado. As colunas mostram o caminho e o nome de cada arquivo, seu tamanho e o número de linhas que foram descarregadas no arquivo.

  • Se FALSE, a saída do comando consiste em uma única linha que descreve toda a operação de descarregamento. As colunas mostram a quantidade total de dados descarregados das tabelas, antes e depois da compressão (se aplicável), e o número total de linhas que foram descarregadas.

Padrão:

FALSE

Notas de uso

  • STORAGE_INTEGRATION ou CREDENTIALS só se aplica se você estiver descarregando diretamente em um local de armazenamento privado (Amazon S3, Google Cloud Storage ou Microsoft Azure). Se você estiver descarregando em um bucket público, o acesso seguro não é necessário, e se você estiver descarregando em um estágio externo nomeado, o estágio fornece todas as informações de credenciais necessárias para acessar o bucket.

  • Se estiver referenciando um formato de arquivo no namespace atual, você pode omitir as aspas simples do identificador do formato.

  • JSON só pode ser especificado como TYPE quando se descarrega dados de colunas VARIANT em tabelas.

  • Ao descarregar em arquivos do tipo CSV, JSON ou PARQUET:

    Por padrão, as colunas VARIANT são convertidas em simples cadeias de caracteres JSON no arquivo de saída.

    • Para descarregar os dados como valores LIST do Parquet, converta explicitamente os valores da coluna em matrizes (usando a função TO_ARRAY).

    • Se uma coluna VARIANT tiver XML, recomendamos converter explicitamente os valores da coluna em XML em uma consulta FROM .... Conversão de valores usando a função TO_XML descarrega as cadeias de caracteres formatadas XML em vez de cadeias de caracteres JSON.

  • Ao descarregar em arquivos do tipo PARQUET:

    Descarregar dados TIMESTAMP_TZ ou TIMESTAMP_LTZ produz um erro.

  • Se a tabela de origem tiver 0 linha, então a operação COPY não descarrega um arquivo de dados.

  • Este comando SQL não retorna um aviso ao descarregar em um local de armazenamento não vazio. Para evitar comportamentos inesperados quando os arquivos em um local de armazenamento são consumidos por pipeline de dados, recomendamos a gravação apenas em locais de armazenamento vazios.

  • Uma operação de descarga com falha ainda pode resultar em arquivos de dados descarregados; por exemplo, se a instrução exceder seu limite de tempo e for cancelada. Além disso, uma operação de descarga com falha para armazenamento em nuvem em uma região diferente resulta em custos de transferência de dados.

  • Se uma política de mascaramento for definida em uma coluna, ela é aplicada aos dados, resultando em usuários não autorizados vendo dados mascarados na coluna.

Exemplos

Descarregamento de dados de uma tabela em arquivos em um estágio de tabela

Descarregar dados da tabela orderstiny para o estágio da tabela usando um prefixo de pasta/nome do arquivo (result/data_), um formato de arquivo nomeado (myformat) e compressão gzip:

COPY INTO @%orderstiny/result/data_
  FROM orderstiny FILE_FORMAT = (FORMAT_NAME ='myformat' COMPRESSION='GZIP');
Copy

Descarregamento de dados de uma consulta para arquivos em um estágio interno nomeado

Descarregar o resultado de uma consulta em um estágio interno nomeado (my_stage) usando um prefixo de pasta/nome de arquivo (result/data_), um formato de arquivo nomeado (myformat) e compressão gzip:

COPY INTO @my_stage/result/data_ FROM (SELECT * FROM orderstiny)
   file_format=(format_name='myformat' compression='gzip');
Copy

Observe que o exemplo acima é funcionalmente equivalente ao primeiro exemplo, exceto que o arquivo contendo os dados descarregados é armazenado no local do estágio para my_stage em vez do local da tabela para orderstiny.

Descarregamento de dados de uma tabela diretamente para arquivos em um local externo

Descarregar todos os dados em uma tabela em um local de armazenamento utilizando um formato de arquivo my_csv_format nomeado:

Amazon S3

Acessar o bucket S3 referenciado usando uma integração de armazenamento referenciada chamada myint:

COPY INTO 's3://mybucket/unload/'
  FROM mytable
  STORAGE_INTEGRATION = myint
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Acessar o bucket S3 referenciado usando as credenciais fornecidas:

COPY INTO 's3://mybucket/unload/'
  FROM mytable
  CREDENTIALS = (AWS_KEY_ID='xxxx' AWS_SECRET_KEY='xxxxx' AWS_TOKEN='xxxxxx')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Google Cloud Storage

Acessar o bucket GCS referenciado usando uma integração de armazenamento referenciada chamada myint:

COPY INTO 'gcs://mybucket/unload/'
  FROM mytable
  STORAGE_INTEGRATION = myint
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Microsoft Azure

Acessar o contêiner referenciado usando uma integração de armazenamento referenciada chamada myint:

COPY INTO 'azure://myaccount.blob.core.windows.net/unload/'
  FROM mytable
  STORAGE_INTEGRATION = myint
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Acessar o contêiner referenciado usando as credenciais fornecidas:

COPY INTO 'azure://myaccount.blob.core.windows.net/mycontainer/unload/'
  FROM mytable
  CREDENTIALS=(AZURE_SAS_TOKEN='xxxx')
  FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Copy

Particionamento de linhas descarregadas para arquivos Parquet

Os seguintes exemplos de partições descarregaram linhas em arquivos Parquet por valores em duas colunas: uma coluna de data e uma coluna de tempo. O exemplo especifica um tamanho máximo para cada arquivo descarregado:

CREATE or replace TABLE t1 (
  dt date,
  ts time
  )
AS
  SELECT TO_DATE($1)
        ,TO_TIME($2)
    FROM VALUES
           ('2020-01-28', '18:05')
          ,('2020-01-28', '22:57')
          ,('2020-01-28', NULL)
          ,('2020-01-29', '02:15')
;

SELECT * FROM t1;

+------------+----------+
| DT         | TS       |
|------------+----------|
| 2020-01-28 | 18:05:00 |
| 2020-01-28 | 22:57:00 |
| 2020-01-28 | 22:32:00 |
| 2020-01-29 | 02:15:00 |
+------------+----------+

-- Partition the unloaded data by date and hour. Set ``32000000`` (32 MB) as the upper size limit of each file to be generated in parallel per thread.
COPY INTO @%t1
  FROM t1
  PARTITION BY ('date=' || to_varchar(dt, 'YYYY-MM-DD') || '/hour=' || to_varchar(date_part(hour, ts))) -- Concatenate labels and column values to output meaningful filenames
  FILE_FORMAT = (TYPE=parquet)
  MAX_FILE_SIZE = 32000000
  HEADER=true;

LIST @%t1;

+------------------------------------------------------------------------------------------+------+----------------------------------+------------------------------+
| name                                                                                     | size | md5                              | last_modified                |
|------------------------------------------------------------------------------------------+------+----------------------------------+------------------------------|
| __NULL__/data_019c059d-0502-d90c-0000-438300ad6596_006_4_0.snappy.parquet                |  512 | 1c9cb460d59903005ee0758d42511669 | Wed, 5 Aug 2020 16:58:16 GMT |
| date=2020-01-28/hour=18/data_019c059d-0502-d90c-0000-438300ad6596_006_4_0.snappy.parquet |  592 | d3c6985ebb36df1f693b52c4a3241cc4 | Wed, 5 Aug 2020 16:58:16 GMT |
| date=2020-01-28/hour=22/data_019c059d-0502-d90c-0000-438300ad6596_006_6_0.snappy.parquet |  592 | a7ea4dc1a8d189aabf1768ed006f7fb4 | Wed, 5 Aug 2020 16:58:16 GMT |
| date=2020-01-29/hour=2/data_019c059d-0502-d90c-0000-438300ad6596_006_0_0.snappy.parquet  |  592 | 2d40ccbb0d8224991a16195e2e7e5a95 | Wed, 5 Aug 2020 16:58:16 GMT |
+------------------------------------------------------------------------------------------+------+----------------------------------+------------------------------+
Copy

Retenção de dados NULL/de campo vazio em arquivos descarregados

Reter SQL NULL e campos vazios em arquivos descarregados:

-- View the table column values
SELECT * FROM HOME_SALES;

+------------+-------+-------+-------------+--------+------------+
| CITY       | STATE | ZIP   | TYPE        | PRICE  | SALE_DATE  |
|------------+-------+-------+-------------+--------+------------|
| Lexington  | MA    | 95815 | Residential | 268880 | 2017-03-28 |
| Belmont    | MA    | 95815 | Residential |        | 2017-02-21 |
| Winchester | MA    | NULL  | Residential |        | 2017-01-31 |
+------------+-------+-------+-------------+--------+------------+

-- Unload the table data into the current user's personal stage. The file format options retain both the NULL value and the empty values in the output file
COPY INTO @~ FROM HOME_SALES
  FILE_FORMAT = (TYPE = csv NULL_IF = ('NULL', 'null') EMPTY_FIELD_AS_NULL = false);

-- Contents of the output file
Lexington,MA,95815,Residential,268880,2017-03-28
Belmont,MA,95815,Residential,,2017-02-21
Winchester,MA,NULL,Residential,,2017-01-31
Copy

Descarregamento de dados em um único arquivo

Descarregar todas as linhas em um único arquivo de dados usando a opção de cópia SINGLE:

copy into @~ from HOME_SALES
single = true;
Copy

Inclusão da UUID nos nomes dos arquivos descarregados

Incluir a UUID nos nomes dos arquivos descarregados, definindo a opção de cópia INCLUDE_QUERY_ID como TRUE:

-- Unload rows from the T1 table into the T1 table stage:
COPY INTO @%t1
  FROM t1
  FILE_FORMAT=(TYPE=parquet)
  INCLUDE_QUERY_ID=true;

-- Retrieve the query ID for the COPY INTO location statement.
-- This optional step enables you to see that the query ID for the COPY INTO location statement
-- is identical to the UUID in the unloaded files.
SELECT last_query_id();
+--------------------------------------+
| LAST_QUERY_ID()                      |
|--------------------------------------|
| 019260c2-00c0-f2f2-0000-4383001cf046 |
+--------------------------------------+

LS @%t1;
+----------------------------------------------------------------+------+----------------------------------+-------------------------------+
| name                                                           | size | md5                              | last_modified                 |
|----------------------------------------------------------------+------+----------------------------------+-------------------------------|
| data_019260c2-00c0-f2f2-0000-4383001cf046_0_0_0.snappy.parquet |  544 | eb2215ec3ccce61ffa3f5121918d602e | Thu, 20 Feb 2020 16:02:17 GMT |
+----------------------------------------------------------------+------+----------------------------------+-------------------------------+
Copy

Validação dos dados a serem descarregados (a partir de uma consulta)

Executar COPY em modo de validação para retornar o resultado de uma consulta e visualizar os dados que serão descarregados da tabela orderstiny se COPY for executado em modo normal:

COPY INTO @my_stage
FROM (SELECT * FROM orderstiny LIMIT 5)
VALIDATION_MODE='RETURN_ROWS';

----+--------+----+-----------+------------+----------+-----------------+----+---------------------------------------------------------------------------+
 C1 |   C2   | C3 |    C4     |     C5     |    C6    |       C7        | C8 |                                    C9                                     |
----+--------+----+-----------+------------+----------+-----------------+----+---------------------------------------------------------------------------+
 1  | 36901  | O  | 173665.47 | 1996-01-02 | 5-LOW    | Clerk#000000951 | 0  | nstructions sleep furiously among                                         |
 2  | 78002  | O  | 46929.18  | 1996-12-01 | 1-URGENT | Clerk#000000880 | 0  |  foxes. pending accounts at the pending\, silent asymptot                 |
 3  | 123314 | F  | 193846.25 | 1993-10-14 | 5-LOW    | Clerk#000000955 | 0  | sly final accounts boost. carefully regular ideas cajole carefully. depos |
 4  | 136777 | O  | 32151.78  | 1995-10-11 | 5-LOW    | Clerk#000000124 | 0  | sits. slyly regular warthogs cajole. regular\, regular theodolites acro   |
 5  | 44485  | F  | 144659.20 | 1994-07-30 | 5-LOW    | Clerk#000000925 | 0  | quickly. bold deposits sleep slyly. packages use slyly                    |
----+--------+----+-----------+------------+----------+-----------------+----+---------------------------------------------------------------------------+
Copy