Ingerir dados em seu Warehouse usando a instrução COPY

Aplica-se a:Warehouse no Microsoft Fabric

A instrução COPY é a principal maneira de ingerir dados em tabelas do Warehouse. 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, ignorando linhas de cabeçalho e outras opções.

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

Observação

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 workspace do Microsoft Fabric, localize e abra o warehouse.

  2. Alterne para a guia Início e selecione Nova consulta SQL.

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

  3. Para criar a tabela usada como destino nesse 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 Parquet por meio da instrução COPY

No primeiro exemplo, carregamos dados usando uma fonte Parquet. Como esses dados está disponível publicamente e não requer autenticação, você pode copiar facilmente esses dados especificando a origem e o destino. Nenhum detalhe de autenticação é necessário. Você só precisará especificar o argumento FILE_TYPE.

Use o seguinte código 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 arquivos CSV (valores separados por vírgula) tenham uma linha de cabeçalho que forneça os nomes de coluna 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 em sua nova tabela. Você pode confirmar se a operação foi executada com êxito executando uma consulta que retorna o número total de linhas em sua tabela:

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

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