Share via


Gegevens opnemen in uw magazijn met behulp van de COPY-instructie

Van toepassing op:✅ Warehouse in Microsoft Fabric

De COPY-instructie is de primaire manier om gegevens op te nemen in magazijntabellen. COPY voert gegevensopname met een hoge doorvoer uit een extern Azure-opslagaccount uit, met de flexibiliteit om opties voor bronbestandsindelingen te configureren, een locatie voor het opslaan van geweigerde rijen, het overslaan van veldnamenrijen en andere opties.

In deze zelfstudie ziet u voorbeelden van gegevensopname voor een magazijntabel met behulp van de T-SQL COPY-instructie. Hierbij worden de Bing COVID-19-voorbeeldgegevens uit de Azure Open Datasets gebruikt. Zie Bing COVID-19 voor meer informatie over deze gegevens, inclusief de bijbehorende schema- en gebruiksrechten.

Notitie

Zie COPY (Transact-SQL)voor meer informatie over de T-SQL COPY-instructie, inclusief meer voorbeelden en de volledige syntaxis.

Een tabel maken

Voordat u de COPY-instructie gebruikt, moet de doeltabel worden gemaakt. Gebruik de volgende stappen om de doeltabel voor dit voorbeeld te maken:

  1. Zoek en open uw magazijn in uw Microsoft Fabric-werkruimte.

  2. Ga naar het tabblad Start en selecteer Nieuwe SQL-query.

    Schermopname van het bovenste gedeelte van de werkruimte van de gebruiker met de knop Nieuwe SQL-query.

  3. Voer de volgende code uit om de tabel te maken die wordt gebruikt als de bestemming in deze zelfstudie:

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

Parquet-gegevens opnemen met behulp van de COPY-instructie

In het eerste voorbeeld laden we gegevens met behulp van een Parquet-bron. Omdat deze gegevens openbaar beschikbaar zijn en geen verificatie vereist, kunt u deze gegevens eenvoudig kopiëren door de bron en het doel op te geven. Er zijn geen verificatiegegevens nodig. U hoeft alleen het FILE_TYPE argument op te geven.

Gebruik de volgende code om de COPY-instructie uit te voeren met een Parquet-bron:

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

CSV-gegevens opnemen met de instructie COPY en een veldnamenrij overslaan

Het is gebruikelijk dat csv-bestanden (door komma's gescheiden waarden) een veldnamenrij hebben die de kolomnamen bevat die de tabel in een CSV-bestand vertegenwoordigen. Met de instructie COPY kunt u gegevens uit CSV-bestanden kopiëren en een of meer rijen uit de koptekst van het bronbestand overslaan.

Als u het vorige voorbeeld hebt uitgevoerd om gegevens uit Parquet te laden, kunt u overwegen alle gegevens uit uw tabel te verwijderen:

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

Gebruik de volgende code om gegevens uit een CSV-bestand te laden dat een veldnamenrij overslaat:

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

De resultaten controleren

De COPY-instructie wordt voltooid door 4.766.736 rijen in uw nieuwe tabel op te nemen. U kunt controleren of de bewerking is uitgevoerd door een query uit te voeren die het totale aantal rijen in de tabel retourneert:

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

Als u beide voorbeelden hebt uitgevoerd zonder de rijen tussen uitvoeringen te verwijderen, ziet u het resultaat van deze query met twee keer zoveel rijen. Hoewel dat werkt voor gegevensopname in dit geval, kunt u overwegen om alle rijen te verwijderen en gegevens slechts één keer op te nemen als u verder wilt experimenteren met deze gegevens.