Inntak av data i lageret ved hjelp av COPY-setningen

Gjelder for: Lager i Microsoft Fabric

COPY-setningen er den primære måten å innta data på i Lager-tabeller. COPY utfører høy gjennomstrømming av data fra en ekstern Azure-lagringskonto, med fleksibilitet til å konfigurere alternativer for kildefilformat, en plassering der du kan lagre avviste rader, hoppe over overskriftsrader og andre alternativer.

Denne opplæringen viser eksempler på datainntak for en Lager-tabell ved hjelp av T-SQL COPY-setningen. Den bruker Bing COVID-19-eksempeldataene fra Azure Open Datasets. Hvis du vil ha mer informasjon om disse dataene, inkludert skjema og bruksrettigheter, kan du se Bing COVID-19.

Merk

Hvis du vil lære mer om T-SQL COPY-setningen, inkludert flere eksempler og den fullstendige syntaksen, kan du se COPY (Transact-SQL).

Opprett en tabell

Før du bruker COPY-setningen, må måltabellen opprettes. Bruk følgende fremgangsmåte for å opprette måltabellen for dette eksemplet:

  1. Finn og åpne lageret i Microsoft Fabric-arbeidsområdet.

  2. Bytt til Hjem-fanen , og velg Ny SQL-spørring.

    Skjermbilde av den øverste delen av brukerens arbeidsområde som viser ny SQL-spørringsknapp.

  3. Hvis du vil opprette tabellen som brukes som mål i denne opplæringen, kjører du 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
    );
    

Inntak av parquet-data ved hjelp av COPY-setningen

I det første eksemplet laster vi inn data ved hjelp av en parkettkilde. Siden disse dataene er offentlig tilgjengelige og ikke krever godkjenning, kan du enkelt kopiere disse dataene ved å angi kilden og målet. Ingen godkjenningsdetaljer er nødvendig. Du trenger bare å angi FILE_TYPE argumentet.

Bruk følgende kode til å kjøre COPY-setningen 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'
);

Innta CSV-data ved hjelp av COPY-setningen og hoppe over en overskriftsrad

Det er vanlig at kommadelte verdifiler (CSV) har en overskriftsrad som gir kolonnenavnene som representerer tabellen i en CSV-fil. COPY-setningen kan kopiere data fra CSV-filer og hoppe over én eller flere rader fra kildefiloverskriften.

Hvis du kjørte det forrige eksemplet for å laste inn data fra Parquet, kan du vurdere å slette alle data fra tabellen:

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

Hvis du vil laste inn data fra en CSV-fil som hopper over en overskriftsrad, bruker du 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
);

Kontroller resultatene

COPY-setningen fullføres ved å innta 4 766 736 rader i den nye tabellen. Du kan bekrefte at operasjonen ble kjørt ved å kjøre en spørring som returnerer totalt antall rader i tabellen:

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

Hvis du kjørte begge eksemplene uten å slette radene mellom kjøringene, ser du resultatet av denne spørringen med dobbelt så mange rader. Selv om dette fungerer for datainntak i dette tilfellet, bør du vurdere å slette alle rader og innta data bare én gang hvis du skal eksperimentere videre med disse dataene.