Inserire dati nel warehouse usando l'istruzione COPY

Si applica a: Warehouse in Microsoft Fabric

L'istruzione COPY è il modo principale per inserire i dati nelle tabelle warehouse. COPY esegue l'inserimento di dati ad alta velocità effettiva da un account di archiviazione di Azure esterno, con la flessibilità necessaria per configurare le opzioni di formato del file di origine, un percorso in cui archiviare le righe rifiutate, ignorare le righe di intestazione e altre opzioni.

Questa esercitazione illustra esempi di inserimento dati per una tabella warehouse usando l'istruzione T-SQL COPY. Usa i dati di esempio di Bing COVID-19 dei set di dati aperti di Azure. Per informazioni dettagliate su questi dati, inclusi i relativi diritti di utilizzo e schema, vedere Bing COVID-19.

Nota

Per altre informazioni sull'istruzione T-SQL COPY, inclusi altri esempi e la sintassi completa, vedere COPY (Transact-SQL).

Crea una tabella

Prima di usare l'istruzione COPY, è necessario creare la tabella di destinazione. Per creare la tabella di destinazione per questo esempio, seguire questa procedura:

  1. Nell'area di lavoro di Microsoft Fabric trovare e aprire il magazzino.

  2. Passare alla scheda Home e selezionare Nuova query SQL.

    Screenshot della sezione superiore dell'area di lavoro dell'utente che mostra il pulsante Nuova query SQL.

  3. Per creare la tabella usata come destinazione in questa esercitazione, eseguire il codice seguente:

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

Inserire dati Parquet usando l'istruzione COPY

Nel primo esempio i dati vengono caricati usando un'origine Parquet. Poiché questi dati sono disponibili pubblicamente e non richiedono l'autenticazione, è possibile copiare facilmente questi dati specificando l'origine e la destinazione. Non sono necessari dettagli di autenticazione. È sufficiente specificare l'argomento FILE_TYPE .

Usare il codice seguente per eseguire l'istruzione COPY con un'origine Parquet:

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

Inserire dati CSV usando l'istruzione COPY e ignorare una riga di intestazione

È comune che i file con valori delimitati da virgole (CSV) abbiano una riga di intestazione che fornisce i nomi di colonna che rappresentano la tabella in un file CSV. L'istruzione COPY può copiare dati da file CSV e ignorare una o più righe dall'intestazione del file di origine.

Se è stato eseguito l'esempio precedente per caricare dati da Parquet, è consigliabile eliminare tutti i dati dalla tabella:

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

Per caricare dati da un file CSV ignorando una riga di intestazione, usare il codice seguente:

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

Controllare i risultati

L'istruzione COPY viene completata inserendo 4.766.736 righe nella nuova tabella. È possibile verificare che l'operazione sia stata eseguita correttamente eseguendo una query che restituisce il numero totale di righe nella tabella:

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

Se sono stati eseguiti entrambi gli esempi senza eliminare le righe tra le esecuzioni, verrà visualizzato il risultato di questa query con un numero doppio di righe. Anche se funziona per l'inserimento dati in questo caso, è consigliabile eliminare tutte le righe e inserire i dati una sola volta se si intende sperimentare ulteriormente con questi dati.