Partilhar via


Ingerir dados no seu Armazém usando a instrução COPY

Aplica-se a:✅ Armazém no Microsoft Fabric

A instrução COPY é a principal maneira de ingerir dados em tabelas de depósito. O COPY executa a ingestão de dados de alta taxa de transferência de uma conta de armazenamento externa do Azure, com a flexibilidade de configurar opções de formato de arquivo de origem, um local para armazenar linhas rejeitadas, ignorar linhas de cabeçalho e outras opções.

Este tutorial mostra exemplos de ingestão de dados para uma tabela Warehouse usando a instrução T-SQL COPY. Ele usa os dados de exemplo do Bing COVID-19 dos Conjuntos de Dados Abertos do Azure. Para obter detalhes sobre esses dados, incluindo seu esquema e direitos de uso, consulte Bing COVID-19.

Nota

Para saber mais sobre a instrução T-SQL COPY, incluindo mais exemplos e a sintaxe completa, consulte COPY (Transact-SQL).

Criar uma tabela

Antes de usar a instrução COPY, a tabela de destino precisa ser criada. Para criar a tabela de destino para este exemplo, use as seguintes etapas:

  1. No espaço de trabalho do Microsoft Fabric, localize e abra seu depósito.

  2. Alterne para a guia Página Inicial e selecione Nova consulta SQL.

    Captura de tela da seção superior do espaço de trabalho do usuário mostrando o botão de consulta Novo SQL.

  3. Para criar a tabela usada como destino neste tutorial, execute o seguinte código:

    CREATE TABLE [dbo].[bing_covid-19_data]
    (
        [id] [int] NULL,
        [updated] [date] NULL,
        [confirmed] [int] NULL,
        [confirmed_change] [int] NULL,
        [deaths] [int] NULL,
        [deaths_change] [int] NULL,
        [recovered] [int] NULL,
        [recovered_change] [int] NULL,
        [latitude] [float] NULL,
        [longitude] [float] NULL,
        [iso2] [varchar](8000) NULL,
        [iso3] [varchar](8000) NULL,
        [country_region] [varchar](8000) NULL,
        [admin_region_1] [varchar](8000) NULL,
        [iso_subdivision] [varchar](8000) NULL,
        [admin_region_2] [varchar](8000) NULL,
        [load_time] [datetime2](6) NULL
    );
    

Ingerir dados do Parquet usando a declaração COPY

No primeiro exemplo, carregamos dados usando uma fonte Parquet. Como esses dados estão disponíveis publicamente e não exigem autenticação, você pode copiar facilmente esses dados especificando a origem e o destino. Não são necessários detalhes de autenticação. Você só precisará especificar o FILE_TYPE argumento.

Use o código a seguir para executar a instrução COPY com uma fonte Parquet:

COPY INTO [dbo].[bing_covid-19_data]
FROM 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet'
WITH (
    FILE_TYPE = 'PARQUET'
);

Ingerir dados CSV usando a instrução COPY e ignorando uma linha de cabeçalho

É comum que os arquivos CSV (valores separados por vírgula) tenham uma linha de cabeçalho que forneça os nomes das colunas que representam a tabela em um arquivo CSV. A instrução COPY pode copiar dados de arquivos CSV e ignorar uma ou mais linhas do cabeçalho do arquivo de origem.

Se você executou o exemplo anterior para carregar dados do Parquet, considere excluir todos os dados da tabela:

DELETE FROM [dbo].[bing_covid-19_data];

Para carregar dados de um arquivo CSV ignorando uma linha de cabeçalho, use o seguinte código:

COPY INTO [dbo].[bing_covid-19_data]
FROM 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv'
WITH (
    FILE_TYPE = 'CSV', 
    FIRSTROW = 2
);

Verificar os resultados

A instrução COPY é concluída ingerindo 4.766.736 linhas na nova tabela. Você pode confirmar que a operação foi executada com êxito executando uma consulta que retorna o número total de linhas na tabela:

SELECT COUNT(*) FROM [dbo].[bing_covid-19_data];

Se você executou ambos os exemplos sem excluir as linhas entre as execuções, verá o resultado dessa consulta com o dobro de linhas. Embora isso funcione para a ingestão de dados neste caso, considere excluir todas as linhas e ingerir dados apenas uma vez se você for experimentar ainda mais esses dados.