Solução de problemas de carregamentos de dados em massa

Este tópico descreve uma abordagem metódica para a solução de problemas com carregamentos de dados em massa.

Neste tópico:

Falhas no carregamento de dados

Etapa 1: visualizar o histórico de COPY da tabela

Consulte o histórico de atividade de carregamento para obter uma tabela. Para obter mais informações, consulte COPY_HISTORY. A coluna STATUS indica se um determinado conjunto de arquivos foi carregado, parcialmente carregado, ou não foi carregado. A coluna FIRST_ERROR_MESSAGE apresenta uma razão quando uma tentativa é parcialmente carregada ou quando não há carregamento.

Observe que se um conjunto de arquivos tiver vários problemas, a coluna FIRST_ERROR_MESSAGE indica apenas o primeiro erro encontrado. Para ver todos os erros nos arquivos, consulte Etapa 2: Validar o carregamento de dados para instruções.

Etapa 2: validar o carregamento de dados

A opção de cópia VALIDATION_MODE instrui uma instrução COPY para validar os dados a serem carregados e retornar resultados com base na opção de validação especificada. Nenhum dado é carregado quando essa opção de cópia é especificada. Para obter mais informações sobre a opção de cópia, consulte COPY INTO <tabela>.

Execute uma instrução COPY com a opção de cópia VALIDATION_MODE definida como RETURN_ALL_ERRORS. Na instrução, faça referência ao conjunto de arquivos que você tentou carregar.

O exemplo a seguir valida um conjunto de arquivos que contém erros. Para facilitar a análise dos erros, uma instrução COPY INTO <local> descarrega os registros problemáticos em um arquivo de texto para que eles possam ser analisados e corrigidos nos arquivos de dados originais. A instrução consulta a função de tabela RESULT_SCAN para recuperar os registros. Observe que as instruções nesta seção devem ser executadas sucessivamente para recuperar os registros aplicáveis usando a função LAST_QUERY_ID.

COPY INTO mytable
  FROM @mystage/myfile.csv.gz
  VALIDATION_MODE=RETURN_ALL_ERRORS;

SET qid=last_query_id();

COPY INTO @mystage/errors/load_errors.txt FROM (SELECT rejected_record FROM TABLE(result_scan($qid)));
Copy

Outros problemas

Erro: Integration {0} associated with the stage {1} cannot be found

003139=SQL compilation error:\nIntegration ''{0}'' associated with the stage ''{1}'' cannot be found.
Copy

Esse erro pode ocorrer quando a associação entre o estágio externo e a integração de armazenamento vinculada ao estágio foi interrompida. Isso acontece quando o objeto de integração de armazenamento foi recriado (usando CREATE OR REPLACE STORAGE INTEGRATION). Um estágio se liga a uma integração de armazenamento usando uma ID oculta em vez do nome da integração de armazenamento. Nos bastidores, a sintaxe CREATE OR REPLACE descarta o objeto e o recria com uma ID oculta diferente.

Se você precisar recriar uma integração de armazenamento após ter sido vinculada a um ou mais estágios, será necessário restabelecer a associação entre cada estágio e a integração de armazenamento executando ALTER STAGE stage_name SET STORAGE_INTEGRATION = storage_integration_name, em que:

  • stage_name é o nome do estágio.

  • storage_integration_name é o nome da integração de armazenamento.

Tempos de carregamento inseridos usando CURRENT_TIMESTAMP antes dos valores LOAD_TIME na exibição COPY_HISTORY

Os criadores de tabelas podem adicionar uma coluna de carimbo de data/hora que insere o carimbo de data/hora atual como o valor padrão à medida que os registros são carregados em uma tabela. A intenção é capturar o tempo em que cada registro foi carregado na tabela; entretanto, os carimbos de data/hora são anteriores aos valores da coluna LOAD_TIME retornados pela função COPY_HISTORY (Information Schema) ou a exibição COPY_HISTORY (Account Usage). O motivo é que CURRENT_TIMESTAMP é avaliado quando a operação de carregamento é compilada em serviços de nuvem e não quando o registro é inserido na tabela (ou seja, quando a transação para a operação de carregamento é confirmada).

Recomenda-se incluir e consultar METADATA$START_SCAN_TIME em vez disso, o que fornece uma representação mais precisa do carregamento de registros.