Déchargement vers Amazon S3

Si vous avez déjà un compte Amazon Web Services (AWS) et que vous utilisez des compartiments S3 pour stocker et gérer vos fichiers de données, vous pouvez utiliser vos compartiments et chemins de dossier existants pour décharger des données à partir de tables Snowflake. Ce chapitre décrit comment utiliser la commande COPY pour décharger des données d’une table vers un compartiment Amazon S3. Vous pouvez ensuite télécharger les fichiers de données déchargés dans votre système de fichiers local.

Comme l’illustre le schéma ci-dessous, le déchargement de données dans un compartiment S3 se fait en deux étapes :

Étape 1

Utilisez la commande COPY INTO <emplacement> pour copier les données de la table de base de données Snowflake dans un ou plusieurs fichiers d’un compartiment S3. Dans la commande, vous spécifiez un objet de zone de préparation externe nommée qui fait référence au compartiment S3 (recommandé), ou vous pouvez choisir de décharger directement vers le compartiment en spécifiant l’URI et soit les identifiants de sécurité soit le nom d’une intégration de stockage (si nécessaire) du compartiment.

Quelle que soit la méthode que vous utilisez, cette étape nécessite l’exécution d’un entrepôt virtuel en cours d’exécution pour la session. L’entrepôt fournit les ressources de calcul pour écrire des lignes à partir de la table.

Étape 2

Utilisez les interfaces/outils fournis par Amazon pour télécharger les fichiers du compartiment S3.

Unloading data to S3

Astuce

Les instructions de cet ensemble de chapitres supposent que vous avez lu Préparation du déchargement de données et que vous avez créé un format de fichier nommé, le cas échéant.

Avant de commencer, vous pouvez également lire Considérations relatives au déchargement des données pour connaître les bonnes pratiques, les conseils et autres instructions.

Dans ce chapitre :

Configuration d’un compartiment S3 pour le déchargement de données

Snowflake requiert les permissions suivantes sur un compartiment S3 et un fichier pour créer de nouveaux fichiers dans le dossier (et tout sous-dossier) :

  • s3:DeleteObject

  • s3:PutObject

Snowflake recommande de configurer un objet d’intégration de stockage afin de déléguer la responsabilité de l’authentification pour le stockage dans un Cloud externe à une entité de gestion des identités et des accès Snowflake (IAM).

Pour des instructions de configuration, voir Configuration de l’accès sécurisé à Amazon S3.

Déchargement de données dans une zone de préparation externe

Les zones de préparation externes sont des objets de base de données nommés fournissant une grande flexibilité pour le déchargement de données. Étant donné qu’il s’agit d’objets de base de données, des privilèges peuvent être attribués à tout rôle pour les zones de préparation nommées.

Vous pouvez créer une zone de préparation nommée externe via l’interface Web ou SQL :

Interface Web

Cliquez sur Databases Databases tab » <nom_bdd> » Stages

SQL

CREATE STAGE

Création d’une zone de préparation nommée

L’exemple suivant crée une zone de préparation externe nommée my_ext_unload_stage à l’aide d’un compartiment S3 nommé unload avec un chemin de dossier nommé files. La zone de préparation accède au compartiment S3 à l’aide d’une intégration de stockage existante nommée s3_int.

La zone de préparation fait référence à l’objet de format de fichier nommé my_csv_unload_format qui a été créé dans Préparation du déchargement de données :

CREATE OR REPLACE STAGE my_ext_unload_stage URL='s3://unload/files/'
    STORAGE_INTEGRATION = s3_int
    FILE_FORMAT = my_csv_unload_format;

Déchargement de données vers la zone de préparation nommée

  1. Utilisez la commande COPY INTO <emplacement> pour décharger les données d’une table vers un compartiment S3 en utilisant la zone de préparation externe.

    L’exemple suivant utilise la zone de préparation my_ext_unload_stage pour décharger toutes les lignes du tableau mytable dans un ou plusieurs fichiers vers le compartiment S3. Un préfixe de nom de fichier d1 s’applique aux fichiers :

    COPY INTO @my_ext_unload_stage/d1 from mytable;
    
  2. Utilisez la console S3 (ou une application client équivalente) pour récupérer les objets du compartiment (c’est-à-dire les fichiers générés par la commande).

Déchargement direct des données vers un compartiment S3

  1. Utilisez la commande COPY INTO <emplacement> pour décharger les données d’une table directement vers un compartiment S3 spécifié. Cette option fonctionne bien pour le déchargement ad hoc, lorsque vous ne planifiez pas un déchargement de données régulier avec les mêmes paramètres de table et de compartiment.

    Vous devez spécifier l’URI pour le compartiment S3 et les identifiants d’intégration de stockage ou pour accéder au compartiment dans la commande COPY.

    L’exemple suivant décharge toutes les lignes de la table mytable dans un ou plusieurs fichiers avec le préfixe de chemin de dossier unload/ vers le compartiment S3 mybucket :

    COPY INTO s3://mybucket/unload/ from mytable storage_integration = s3_int;
    

    Note

    Dans cet exemple, l’accès au compartiment S3 référencé est effectué à l’aide d’une intégration de stockage référencée nommée s3_int.

  2. Utilisez la console S3 (ou une application client équivalente) pour récupérer les objets du compartiment (c’est-à-dire les fichiers générés par la commande).