Indfødning af data i lageret ved hjælp af COPY-sætningen

Gælder for: Warehouse i Microsoft Fabric

COPY-sætningen er den primære måde at indføde data i warehouse-tabeller på. COPY udfører dataindtagelse med høj dataoverførselshastighed fra en ekstern Azure Storage-konto med fleksibiliteten til at konfigurere indstillinger for kildefilformat, en placering til lagring af afviste rækker, spring over headerrækker og andre indstillinger.

I dette selvstudium vises eksempler på dataindtagelse for en lagertabel ved hjælp af T-SQL COPY-sætningen. Den bruger Bing COVID-19-eksempeldataene fra Azure Open Datasets. Du kan finde oplysninger om disse data, herunder skemaet og brugsrettighederne, under Bing COVID-19.

Bemærk

Hvis du vil vide mere om T-SQL COPY-sætningen, herunder flere eksempler og den fulde syntaks, skal du se COPY (Transact-SQL).

Opret en tabel

Før du bruger COPY-sætningen, skal destinationstabellen oprettes. Hvis du vil oprette destinationstabellen for dette eksempel, skal du benytte følgende fremgangsmåde:

  1. Find og åbn dit lager i dit Microsoft Fabric-arbejdsområde.

  2. Skift til fanen Hjem, og vælg Ny SQL-forespørgsel.

    Skærmbillede af den øverste del af brugerens arbejdsområde, der viser knappen Ny SQL-forespørgsel.

  3. Hvis du vil oprette den tabel, der bruges som destination i dette selvstudium, skal du køre følgende kode:

    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
    );
    

Indfødning af parquetdata ved hjælp af COPY-sætningen

I det første eksempel indlæser vi data ved hjælp af en Parquet-kilde. Da disse data er offentligt tilgængelige og ikke kræver godkendelse, kan du nemt kopiere disse data ved at angive kilden og destinationen. Der kræves ingen godkendelsesoplysninger. Du skal kun angive argumentet FILE_TYPE .

Brug følgende kode til at køre COPY-sætningen med en parquetkilde:

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'
);

Indfødning af CSV-data ved hjælp af COPY-sætningen og springer en overskriftsrække over

Det er almindeligt, at filer med kommaseparerede værdier (CSV) har en kolonneoverskrift, der indeholder de kolonnenavne, der repræsenterer tabellen i en CSV-fil. COPY-sætningen kan kopiere data fra CSV-filer og springe en eller flere rækker over fra kildefilheaderen.

Hvis du kørte det forrige eksempel for at indlæse data fra Parquet, kan du overveje at slette alle data fra tabellen:

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

Hvis du vil indlæse data fra en CSV-fil, der springer en kolonneoverskrift over, skal du bruge følgende kode:

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
);

Kontrollér resultaterne

COPY-sætningen fuldføres ved at indtage 4.766.736 rækker i den nye tabel. Du kan bekræfte, at handlingen blev kørt, ved at køre en forespørgsel, der returnerer det samlede antal rækker i tabellen:

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

Hvis du kørte begge eksempler uden at slette rækkerne mellem kørsler, får du vist resultatet af denne forespørgsel med dobbelt så mange rækker. Selvom det fungerer for dataindtagelse i dette tilfælde, kan du overveje kun at slette alle rækker og indtage data én gang, hvis du vil eksperimentere yderligere med disse data.