Ingérer des données dans votre entrepôt à l’aide de l’instruction COPY

S'applique à :✅ Entrepôt dans Microsoft Fabric

L'instruction COPY est le principal moyen d'ingérer des données dans les tables Warehouse. COPY effectue une ingestion de données à haut débit à partir d'un compte de stockage Azure externe, avec la flexibilité de configurer les options de format de fichier source, un emplacement pour stocker les lignes rejetées, ignorer les lignes d'en-tête et d'autres options.

Ce tutoriel présente des exemples d’ingestion de données pour une table Warehouse à l’aide de l’instruction T-SQL COPY. Il utilise les données d'exemple Bing COVID-19 des jeux de données ouverts Azure. Pour plus d’informations sur ces données, notamment sur leur schéma et leurs droits d’utilisation, consultez Bing COVID-19.

Remarque

L’entrepôt vous permet également d’utiliser l’instruction BULK INSERT pour l’ingestion de données. L’instruction COPY INTO est l’instruction recommandée pour le nouveau code d’ingestion, tandis que l’instruction BULK INSERT vous permet de réutiliser le code que vous utilisez dans SQL Server ou Azure SQL Database.

Pour en savoir plus sur l’instruction T-SQL COPY , notamment d’autres exemples et la syntaxe complète, consultez COPY (Transact-SQL).

Créer une table

Avant d'utiliser l'instruction COPY, la table de destination doit être créée. Pour créer la table de destination pour cet exemple, procédez comme suit :

  1. Dans votre espace de travail Microsoft Fabric, recherchez et ouvrez votre entrepôt.

  2. Passez à l'onglet Accueil et sélectionnez Nouvelle requête SQL.

    Capture d'écran de la section supérieure de l'espace de travail de l'utilisateur montrant le bouton Nouvelle requête SQL.

  3. Pour créer la table utilisée comme destination dans ce tutoriel, exécutez le code suivant :

        CREATE TABLE dbo.TaxiTrips
        (
            doLocationId            varchar(MAX)      NULL,
            endLat                  float             NULL,
            endLon                  float             NULL,
            extra                   float             NULL,
            fareAmount              float             NULL,
            improvementSurcharge    varchar(MAX)      NULL,
            mtaTax                  float             NULL,
            passengerCount          int               NULL,
            paymentType             varchar(MAX)      NULL,
            puLocationId            varchar(MAX)      NULL,
            puMonth                 int               NULL,
            puYear                  int               NULL,
            rateCodeId              int               NULL,
            startLat                float             NULL,
            startLon                float             NULL,
            storeAndFwdFlag         varchar(1)        NULL,
            tipAmount               float             NULL,
            tollsAmount             float             NULL,
            totalAmount             float             NULL,
            tpepDropoffDateTime     datetime2(6)      NULL,
            tpepPickupDateTime      datetime2(6)      NULL,
            tripDistance            float             NULL,
            vendorId_str            varchar(MAX)      NULL,
            vendorId_lpep           int               NULL
        );
    

Ingérer les données Parquet à l'aide de l'instruction COPY

Dans cet exemple, nous chargeons des données à l’aide d’une source Parquet. Étant donné que ces données sont en accès public et ne nécessite pas d’authentification, vous pouvez facilement les copier en spécifiant la source et la destination. Aucun détail d'authentification n'est nécessaire. Vous n'aurez qu'à spécifier l'argument FILE_TYPE.

Utilisez le code suivant pour exécuter l'instruction COPY avec une source Parquet :

COPY INTO dbo.TaxiTrips
FROM 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow'
WITH (
    FILE_TYPE = 'PARQUET'
)

Vérification des résultats

L’instruction COPY se termine en ingérant 1 571 671 152 lignes dans votre nouvelle table. Vous pouvez confirmer que l'opération s'est déroulée avec succès en exécutant une requête renvoyant le nombre total de lignes de votre table :

SELECT COUNT_BIG(*) FROM dbo.TaxiTrips;

Options d’ingestion des données

Voici d’autres façons d’ingérer des données dans votre entrepôt :