Erfassen von Daten in Ihr Warehouse mithilfe der COPY-Anweisung

Gilt für: Warehouse in Microsoft Fabric

Die COPY-Anweisung ist die primäre Methode zum Erfassen von Daten in Warehousetabellen. Mit COPY erfolgt die Datenerfassung mit hohem Durchsatz aus einem externen Azure-Speicherkonto, wobei Sie flexibel Optionen für Quelldateiformate, einen Speicherort für abgelehnte Zeilen, das Überspringen von Kopfzeilen und andere Optionen konfigurieren können.

Dieses Tutorial zeigt Beispiele für die Datenerfassung für eine Warehousetabelle mit der T-SQL-Anweisung „COPY“. Es verwendet die Bing COVID-19-Beispieldaten aus Azure Open Datasets. Einzelheiten zu diesen Daten, einschließlich des Schemas und der Nutzungsrechte, finden Sie unter Bing COVID-19.

Hinweis

Weitere Informationen zur T-SQL-Anweisung „COPY“, einschließlich weiterer Beispiele und der vollständigen Syntax, finden Sie unter COPY (Transact-SQL).

Erstellen einer Tabelle

Bevor Sie die COPY-Anweisung verwenden, muss die Zieltabelle erstellt werden. Führen Sie die folgenden Schritte aus, um die Zieltabelle für dieses Beispiel zu erstellen:

  1. Suchen und öffnen Sie in Ihrem Microsoft Fabric-Arbeitsbereich Ihr Warehouse.

  2. Wechseln Sie zur Registerkarte Start, und wählen Sie Neue SQL-Abfrage aus.

    Screenshot: Oberer Abschnitt des Benutzerarbeitsbereichs mit der Schaltfläche „Neue Abfrage“

  3. Führen Sie den folgenden Code aus, um die Tabelle zu erstellen, die in diesem Tutorial als Ziel verwendet wird:

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

Erfassen von Parquet-Daten mithilfe der COPY-Anweisung

Im ersten Beispiel laden wir Daten mithilfe einer Parquet-Quelle. Da diese Daten öffentlich verfügbar sind und keine Authentifizierung erfordern, können Sie diese Daten einfach kopieren, indem Sie die Quelle und das Ziel angeben. Es sind keine Authentifizierungsdetails erforderlich. Sie müssen nur das FILE_TYPE-Argument angeben.

Verwenden Sie den folgenden Code, um die COPY-Anweisung mit einer Parquet-Quelle auszuführen:

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

Erfassen von CSV-Daten mithilfe der COPY-Anweisung und Überspringen einer Kopfzeile

Es ist üblich, dass CSV-Dateien über eine Kopfzeile verfügen, die die Spaltennamen der Tabelle in der CSV-Datei enthält. Die COPY-Anweisung kann Daten aus CSV-Dateien kopieren und eine oder mehrere Zeilen aus der Quelldateikopfzeile überspringen.

Wenn Sie das vorherige Beispiel ausgeführt haben, um Daten aus Parquet zu laden, sollten Sie erwägen, alle Daten aus Ihrer Tabelle zu löschen:

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

Verwenden Sie den folgenden Code, um Daten aus einer CSV-Datei zu laden und eine Kopfzeile zu überspringen:

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

Prüfen der Ergebnisse

Die COPY-Anweisung wird abgeschlossen, indem 4.766.736 Zeilen in Ihrer neuen Tabelle erfasst werden. Sie können bestätigen, dass der Vorgang erfolgreich ausgeführt wurde, indem Sie eine Abfrage ausführen, die die Gesamtanzahl der Zeilen in Ihrer Tabelle zurückgibt:

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

Wenn Sie beide Beispiele ausgeführt haben, ohne die Zeilen zwischen den Ausführungen zu löschen, enthält das Ergebnis dieser Abfrage doppelt so viele Zeilen. Das funktioniert in diesem Fall zwar für die Datenerfassung, aber erwägen Sie, alle Zeilen zu löschen und Daten nur einmal zu erfassen, wenn Sie mit diesen Daten weiter experimentieren möchten.