Copy data from a Google Cloud Storage stage¶
Carregue os dados de seus arquivos preparados para a tabela de destino.
Load your data¶
Execute COPY INTO <tabela> para carregar seus dados na tabela de destino.
Nota
O carregamento de dados requer um warehouse. Se você estiver usando um warehouse que não esteja configurado para retomada automática, execute ALTER WAREHOUSE para retomar o warehouse. Note que iniciar o warehouse pode demorar até cinco minutos.
ALTER WAREHOUSE mywarehouse RESUME;
Importante
A lista de objetos retornados para um estágio externo pode incluir um ou mais “blobs de diretório”; essencialmente, caminhos que terminam em um caractere de barra (/), por exemplo:
LIST @my_gcs_stage;
+---------------------------------------+------+----------------------------------+-------------------------------+
| name | size | md5 | last_modified |
|---------------------------------------+------+----------------------------------+-------------------------------|
| my_gcs_stage/load/ | 12 | 12348f18bcb35e7b6b628ca12345678c | Mon, 11 Sep 2019 16:57:43 GMT |
| my_gcs_stage/load/data_0_0_0.csv.gz | 147 | 9765daba007a643bdff4eae10d43218y | Mon, 11 Sep 2019 18:13:07 GMT |
+---------------------------------------+------+----------------------------------+-------------------------------+
Esses blobs são listados quando os diretórios são criados no Google Cloud console em vez de usar qualquer outra ferramenta fornecida pelo Google.
COPY statements that reference a stage can fail when the object list includes directory blobs. To avoid errors, we recommend using file pattern matching to identify the files for inclusion (i.e. the PATTERN clause) when the file list for a stage includes directory blobs. For an example, see Load data using pattern matching (in this topic). Alternatively, set ON_ERROR = SKIP_FILE in the COPY statement.
Load data using pattern matching¶
O exemplo a seguir carrega dados de arquivos no estágio denominado my_gcs_stage criado em Configure an integration for Google Cloud Storage. Usando a correspondência de padrões, a instrução só carrega arquivos cujos nomes começam com a cadeia de caracteres sales:
COPY INTO mytable FROM @my_gcs_stage PATTERN='.*sales.*.csv';
Observe que as opções de formato de arquivo não são especificadas porque um formato de arquivo nomeado foi incluído na definição do estágio.
Load data using a path / prefix¶
O exemplo a seguir carrega todos os arquivos com o caminho data/files (ou seja, prefixo) em seu bucket de armazenamento em nuvem usando o formato de arquivo nomeado my_csv_format criado em Preparação para carregar dados. Observe que um caminho pode ser combinado com a correspondência de padrões:
COPY INTO mytable FROM @my_gcs_stage/mybucket/data/files FILE_FORMAT = (FORMAT_NAME = my_csv_format);
Load data using ad hoc file format options¶
O seguinte exemplo ad hoc carrega dados de todos os arquivos no bucket de armazenamento em nuvem. O comando COPY especifica as opções de formato de arquivo em vez de fazer referência a um formato de arquivo nomeado. Este exemplo carrega arquivos CSV com um delimitador de campo de canal (|). O comando COPY ignora a primeira linha nos arquivos de dados.
Observe que a referência de integração de armazenamento é necessária em carregamentos de dados ad hoc, ou seja, quando a instrução COPY não faz referência a um estágio:
COPY INTO mytable
FROM 'gcs://mybucket/data/files'
STORAGE_INTEGRATION = myint
FILE_FORMAT = (TYPE = CSV FIELD_DELIMITER = '|' SKIP_HEADER = 1);
Validate your data¶
Antes de carregar seus dados, você pode validar se os dados nos arquivos carregados serão carregados corretamente.
Para validar dados em um arquivo carregado, execute COPY INTO <tabela> no modo de validação usando o parâmetro VALIDATION_MODE. O parâmetro VALIDATION_MODE retorna os erros que encontra no arquivo. Você pode então modificar os dados no arquivo para garantir que eles sejam carregados sem erros.
Além disso, COPY INTO <tabela> fornece a opção de cópia ON_ERROR para especificar uma ação a ser executada se forem encontrados erros em um arquivo durante o carregamento.
Monitor data loads¶
O Snowflake retém dados históricos para os comandos COPY INTO executados dentro dos 14 dias anteriores. Os metadados podem ser usados para monitorar e gerenciar o processo de carregamento, incluindo a exclusão de arquivos após a conclusão do carregamento:
Monitor the status of each COPY INTO <tabela> command on the Query History page of Snowsight.
Use a LOAD_HISTORY exibição do Information Schema para recuperar o histórico dos dados carregados nas tabelas usando o comando COPYINTO.
Copy files from one stage to another¶
Use o comando COPY FILES para organizar os dados em um único local, copiando arquivos de um estágio nomeado para outro.
O exemplo a seguir copia todos os arquivos de um estágio de origem (src_stage) para um estágio de destino (trg_stage):
COPY FILES
INTO @trg_stage
FROM @src_stage;
Você também pode especificar uma lista de nomes de arquivos para copiar ou copiar arquivos usando correspondência de padrões. Para obter mais informações, consulte os exemplos COPYFILES.