Läs på engelska

Dela via


Mata in data i ditt lager med copy-instruktionen

Gäller för:✅ Warehouse i Microsoft Fabric

COPY-instruktionen är det primära sättet att mata in data i lagertabeller. COPY utför datainmatning med högt dataflöde från ett externt Azure Storage-konto, med flexibiliteten att konfigurera alternativ för källfilformat, en plats där avvisade rader ska lagras, hoppa över rubrikrader och andra alternativ.

Den här självstudien visar exempel på datainmatning för en lagertabell med hjälp av T-SQL COPY-instruktionen. Den använder exempeldata från Bing COVID-19 från Azure Open Datasets. Mer information om dessa data, inklusive dess schema- och användningsrättigheter, finns i Bing COVID-19.

Anteckning

Mer information om T-SQL COPY-instruktionen, inklusive fler exempel och den fullständiga syntaxen, finns i COPY (Transact-SQL).

Skapa en tabell

Innan du använder COPY-instruktionen måste måltabellen skapas. Använd följande steg för att skapa måltabellen för det här exemplet:

  1. På din Microsoft Fabric-arbetsyta letar du upp och öppnar ditt lager.

  2. Växla till fliken Start och välj Ny SQL-fråga.

    Skärmbild av det översta avsnittet på användarens arbetsyta som visar knappen Ny SQL-fråga.

  3. Om du vill skapa tabellen som används som mål i den här självstudien kör du följande kod:

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

Mata in Parquet-data med copy-instruktionen

I det första exemplet läser vi in data med hjälp av en Parquet-källa. Eftersom dessa data är offentligt tillgängliga och inte kräver autentisering kan du enkelt kopiera dessa data genom att ange källan och målet. Ingen autentiseringsinformation behövs. Du behöver bara ange FILE_TYPE argumentet.

Använd följande kod för att köra COPY-instruktionen med en Parquet-källa:

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

Mata in CSV-data med copy-instruktionen och hoppa över en rubrikrad

Det är vanligt att CSV-filer (kommaavgränsade värden) har en rubrikrad som innehåller kolumnnamnen som representerar tabellen i en CSV-fil. COPY-instruktionen kan kopiera data från CSV-filer och hoppa över en eller flera rader från källfilens huvud.

Om du körde föregående exempel för att läsa in data från Parquet kan du överväga att ta bort alla data från tabellen:

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

Om du vill läsa in data från en CSV-fil som hoppar över en rubrikrad använder du följande kod:

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

Kontrollera resultaten

COPY-instruktionen slutförs genom att mata in 4 766 736 rader i den nya tabellen. Du kan bekräfta att åtgärden kördes genom att köra en fråga som returnerar det totala antalet rader i tabellen:

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

Om du körde båda exemplen utan att ta bort raderna mellan körningarna visas resultatet av den här frågan med dubbelt så många rader. Även om det fungerar för datainmatning i det här fallet bör du överväga att ta bort alla rader och mata in data bara en gång om du ska experimentera ytterligare med dessa data.