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:
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 ]
Onde:
internalStage ::= @[<namespace>.]<int_stage_name>[/<path>] | @[<namespace>.]%<table_name>[/<path>] | @~[/<path>]externalStage ::= @[<namespace>.]<ext_stage_name>[/<path>]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' ] ) ]externalLocation (for Google Cloud Storage) ::= 'gcs://<bucket>[/<path>]' [ STORAGE_INTEGRATION = <integration_name> ] [ ENCRYPTION = ( [ TYPE = 'GCS_SSE_KMS' ] [ KMS_KEY_ID = '<string>' ] | [ TYPE = 'NONE' ] ) ]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>' ] ) ]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 | FALSEcopyOptions ::= OVERWRITE = TRUE | FALSE SINGLE = TRUE | FALSE MAX_FILE_SIZE = <num> INCLUDE_QUERY_ID = TRUE | FALSE DETAILED_OUTPUT = TRUE | FALSE
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 dedatabase_name.schema_name
ouschema_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 empath
ou se o parâmetroPARTITION BY
for especificado, os nomes de arquivo para os arquivos de dados gerados recebem o prefixodata_
.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;
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
ouschema_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 valorMASTER_KEY
). Atualmente, a chave mestra do lado do cliente que você fornece só pode ser uma chave simétrica. Note que, quando um valorMASTER_KEY
é fornecido, o Snowflake assumeTYPE = AWS_CSE
(ou seja, quando um valorMASTER_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 opcionalKMS_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 à criptografiaAWS_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 à criptografiaAWS_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:
GCS_SSE_KMS
: criptografia do lado do servidor que aceita um valor opcionalKMS_KEY_ID
.Para obter mais informações, consulte a documentação do Google Cloud Platform:
NONE
: sem criptografia.
KMS_KEY_ID = 'string'
(aplica-se somente à criptografiaGCS_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:
AZURE_CSE
: criptografia do lado do cliente (exige um valor MASTER_KEY). Para obter mais informações, consulte as informações sobre criptografia do lado do cliente na documentação do Microsoft Azure.NONE
: sem criptografia.
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 prefixo0x
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 prefixo0x
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
forTRUE
, 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 caminhointernal_location
ouexternal_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 quecompression
é a extensão adicionada pelo método de compressão, seCOMPRESSION
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
ouRECORD_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, assumindoESCAPE_UNENCLOSED_FIELD=\
)EMPTY_FIELD_AS_NULL = TRUE | FALSE
Usado em combinação com
FIELD_OPTIONALLY_ENCLOSED_BY
. QuandoFIELD_OPTIONALLY_ENCLOSED_BY = NONE
, a definição deEMPTY_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 quecompression
é a extensão adicionada pelo método de compressão, seCOMPRESSION
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 deOVERWRITE = 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 empath
.
Importante
Se
SINGLE = TRUE
, então COPY ignora a opção de formato de arquivoFILE_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 externopath
. Por exemplo:COPY INTO @mystage/data.csv ...
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 especificadopath
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 ...
- 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 (definindoPARTITION 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
ouCREDENTIALS
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 comoTYPE
quando se descarrega dados de colunas VARIANT em tabelas.Ao descarregar em arquivos do tipo
CSV
,JSON
ouPARQUET
: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');
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');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 paraorderstiny
.
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);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);
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);
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);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);
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 |
+------------------------------------------------------------------------------------------+------+----------------------------------+------------------------------+
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
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;
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 |
+----------------------------------------------------------------+------+----------------------------------+-------------------------------+
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 | ----+--------+----+-----------+------------+----------+-----------------+----+---------------------------------------------------------------------------+