Guida introduttiva: Caricare in blocco i dati usando l'istruzione COPY

Tip

Microsoft Fabric Data Warehouse è un data warehouse relazionale su scala aziendale su una base data lake, con un'architettura futura, un'intelligenza artificiale predefinita e nuove funzionalità. Se non si ha familiarità con il data warehousing, iniziare con Fabric Data Warehouse. I carichi di lavoro esistenti del pool SQL dedicated possono eseguire l'aggiornamento a Fabric per accedere a nuove funzionalità tra data science, analisi in tempo reale e creazione di report.

In questo quickstart verrà eseguito un caricamento in blocco dei dati nel pool SQL dedicato usando l'istruzione COPY semplice e flessibile per l'inserimento di dati a throughput elevato. L'istruzione COPY è l'utilità di caricamento consigliata in quanto consente di caricare i dati in modo semplice e flessibile fornendo funzionalità per:

  • Consentire agli utenti con privilegi inferiori di caricare senza bisogno di autorizzazioni CONTROL rigorose nel data warehouse
  • Sfruttare solo una singola istruzione T-SQL senza dover creare oggetti di database aggiuntivi
  • Utilizzare un modello di autorizzazione più dettagliato senza esporre le chiavi dell'account di archiviazione, sfruttando le firme di accesso condiviso SAS.
  • Specificare un account di archiviazione diverso per il percorso ERRORFILE (REJECTED_ROW_LOCATION)
  • Personalizzare i valori predefiniti per ogni colonna di destinazione e specificare i campi dei dati di origine da caricare in colonne di destinazione specifiche
  • Specificare un carattere di terminazione di riga personalizzato per i file CSV
  • Delimitatori stringa di escape, campo e riga per i file CSV
  • Sfruttare i formati di data SQL Server per i file CSV
  • Specificare caratteri jolly e più file nel percorso della posizione di archiviazione

Prerequisites

Questa guida di avvio rapido presuppone che si abbia già un pool SQL dedicato. Se non è stato creato un pool SQL dedicato, usare la guida introduttiva Creare e connettere il portale .

Configurare le autorizzazioni necessarie

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

Creare la tabella di destinazione

In questo esempio verranno caricati i dati dal set di dati dei taxi di New York. Verrà caricata una tabella denominata Trip che rappresenta le corse dei taxi eseguite entro un singolo anno. Eseguire il comando seguente per creare la tabella:

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

Eseguire l'istruzione COPY

Eseguire la seguente istruzione COPY che caricherà i dati dall'account di archiviazione Blob Azure nella tabella Trip.

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

Monitorare il carico

Controllare se il carico sta facendo progresso eseguendo periodicamente la seguente query:

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;

Passaggi successivi