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 laden Sie Daten in Ihren dedizierten SQL-Pool mit der einfachen und flexiblen COPY-Anweisung für die Erfassung von Daten mit hohem Durchsatz. Die COPY-Anweisung ist das empfohlene Ladeprogramm, da sie es Ihnen ermöglicht, Daten nahtlos und flexibel zu laden, indem Sie Funktionen bereitstellen:

  • 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
  • Zeichenfolgen, Feld- und Zeilentrennzeichen für CSV-Dateien maskieren
  • 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