Schnellstart: Massenladen von Daten mithilfe der COPY-Anweisung

Tip

Microsoft Fabric Data Warehouse ist ein relationales Enterprise-Warehouse auf einem Data Lake-Fundament mit zukunftsfähiger Architektur, integrierter KI und neuen Features. Wenn Sie mit Data Warehouse noch nicht vertraut sind, beginnen Sie mit Fabric Data Warehouse. Vorhandene dedizierte SQL-Pool-Workloads können auf Fabric aktualisieren, um neue Funktionen in den Bereichen Data Science, Echtzeitanalyse und Berichterstellung zu nutzen.

In dieser Schnellstartanleitung verwenden Sie das Massenladen von Daten in Ihren dedizierten SQL-Pool mithilfe der einfachen und flexiblen COPY-Anweisung für die Datenerfassung mit hohem Durchsatz. Die COPY-Anweisung ist das empfohlene Ladehilfsprogramm, da sie Ihnen mit folgender Funktionalität das nahtlose und flexible Laden von Daten ermöglicht:

  • Zulassen, dass Benutzer mit niedrigeren Rechten laden können, ohne strenge CONTROL-Berechtigungen für das Data Warehouse zu benötigen
  • Verwenden Sie nur eine einzelne T-SQL-Anweisung, ohne zusätzliche Datenbankobjekte erstellen zu müssen
  • Nutzen eines feineren Berechtigungsmodells ohne Verfügbarmachen von Speicherkontoschlüsseln mithilfe von Share Access Signatures (SAS)
  • Geben Sie ein anderes Speicherkonto für den ERRORFILE-Speicherort (REJECTED_ROW_LOCATION) an.
  • Anpassen der Standardwerte für jede Zielspalte und Angeben der Quelldatenfelder, die in bestimmte Zielspalten geladen werden sollen
  • Angeben eines benutzerdefinierten Zeilenendpunkts für CSV-Dateien
  • Escapezeichenfolge, Feld und Zeilentrennzeichen für CSV-Dateien
  • Nutzen von SQL Server Datumsformaten für CSV-Dateien
  • Platzhalter und mehrere Dateien im Speicherpfad angeben

Prerequisites

In dieser Schnellstartanleitung wird vorausgesetzt, dass Sie bereits über einen dedizierten SQL-Pool verfügen. Wenn kein dedizierter SQL-Pool erstellt wurde, verwenden Sie die Schnellstartanleitung zum Erstellen und Verbinden des Portals .

Einrichten der erforderlichen Berechtigungen

-- List the permissions for your user
select  princ.name
,       princ.type_desc
,       perm.permission_name
,       perm.state_desc
,       perm.class_desc
,       object_name(perm.major_id)
from    sys.database_principals princ
left join
        sys.database_permissions perm
on      perm.grantee_principal_id = princ.principal_id
where name = '<yourusername>';

--Make sure your user has the permissions to CREATE tables in the [dbo] schema
GRANT CREATE TABLE TO <yourusername>;
GRANT ALTER ON SCHEMA::dbo TO <yourusername>;

--Make sure your user has ADMINISTER DATABASE BULK OPERATIONS permissions
GRANT ADMINISTER DATABASE BULK OPERATIONS TO <yourusername>

--Make sure your user has INSERT permissions on the target table
GRANT INSERT ON <yourtable> TO <yourusername>

Erstellen der Zieltabelle

In diesem Beispiel laden wir Daten aus dem New York-Taxi-Dataset. Wir laden eine Tabelle namens Trip, die Taxifahrten innerhalb eines jahres darstellt. Führen Sie folgendes Aus, um die Tabelle zu erstellen:

CREATE TABLE [dbo].[Trip]
(
    [DateID] int NOT NULL,
    [MedallionID] int NOT NULL,
    [HackneyLicenseID] int NOT NULL,
    [PickupTimeID] int NOT NULL,
    [DropoffTimeID] int NOT NULL,
    [PickupGeographyID] int NULL,
    [DropoffGeographyID] int NULL,
    [PickupLatitude] float NULL,
    [PickupLongitude] float NULL,
    [PickupLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [DropoffLatitude] float NULL,
    [DropoffLongitude] float NULL,
    [DropoffLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [PassengerCount] int NULL,
    [TripDurationSeconds] int NULL,
    [TripDistanceMiles] float NULL,
    [PaymentType] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [FareAmount] money NULL,
    [SurchargeAmount] money NULL,
    [TaxAmount] money NULL,
    [TipAmount] money NULL,
    [TollsAmount] money NULL,
    [TotalAmount] money NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
);

Ausführen der COPY-Anweisung

Führen Sie die folgende COPY-Anweisung aus, die Daten aus dem Azure BLOB-Speicherkonto in die Trip-Tabelle lädt.

COPY INTO [dbo].[Trip] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013/'
WITH (
   FIELDTERMINATOR='|',
   ROWTERMINATOR='0x0A'
) OPTION (LABEL = 'COPY: dbo.trip');

Überwachen Sie die Last

Überprüfen Sie, ob ihre Last fortschritte macht, indem Sie regelmäßig die folgende Abfrage ausführen:

SELECT  r.[request_id]                           
,       r.[status]                               
,       r.resource_class                         
,       r.command
,       sum(bytes_processed) AS bytes_processed
,       sum(rows_processed) AS rows_processed
FROM    sys.dm_pdw_exec_requests r
              JOIN sys.dm_pdw_dms_workers w
                     ON r.[request_id] = w.request_id
WHERE [label] = 'COPY: dbo.trip' and session_id <> session_id() and type = 'WRITER'
GROUP BY r.[request_id]                           
,       r.[status]                               
,       r.resource_class                         
,       r.command;

Nächste Schritte