Déchargement vers une zone de préparation Snowflake

Cet ensemble de chapitres décrit comment utiliser la commande COPY pour décharger des données d’une table vers une zone de préparation interne (c-à-d Snowflake) interne. 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 vers un système de fichiers local se fait en deux étapes distinctes :

É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’une zone de préparation Snowflake. Dans l’instruction SQL, vous indiquez la zone de préparation (zone de préparation nommée ou zone de préparation table/utilisateur) où les fichiers sont écrits.

Quelle que soit la zone de préparation 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 la commande GET pour télécharger les fichiers de données sur votre système de fichiers local.

Unloading data to a Snowflake stage

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 :

Déchargement des données

Cette section fournit des instructions relatives au déchargement de données de table vers une zone de préparation interne nommée, une zone de préparation de table ou une zone de préparation d’utilisateur.

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

Les zones de préparation internes 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 interne 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 interne faisant référence à l’objet de format de fichier nommé appelé my_csv_unload_format créé dans Préparation du déchargement de données :

CREATE OR REPLACE STAGE my_unload_stage
  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 toutes les lignes d’une table dans un ou plusieurs fichiers de la zone de préparation my_csv_unload_format. L’instruction ajoute le préfixe unload/ aux fichiers déchargés pour organiser les fichiers dans la zone de préparation :

    Par exemple :

    COPY INTO @mystage/unload/ from mytable;
    

    Notez que le caractère @ identifie à lui seul une zone de préparation nommée.

    Note

    Comme les options de format de fichier ont été définies pour la zone de préparation, il n’est pas nécessaire de spécifier les mêmes options de format de fichier dans la commande COPY.

  2. Utilisez la commande LIST pour afficher une liste des fichiers qui ont été déchargés sur la zone de préparation :

    LIST @mystage;
    
    +----------------------------------+------+----------------------------------+-------------------------------+
    | name                             | size | md5                              | last_modified                 |
    |----------------------------------+------+----------------------------------+-------------------------------|
    | mystage/unload/data_0_0_0.csv.gz |  112 | 6f77daba007a643bdff4eae10de5bed3 | Mon, 11 Sep 2017 18:13:07 GMT |
    +----------------------------------+------+----------------------------------+-------------------------------+
    
  3. Utilisez la commande GET pour télécharger le(s) fichier(s) généré(s) de la table vers votre machine locale. L’exemple suivant télécharge les fichiers dans le répertoire data/unload :

    Par exemple :

    Linux ou macOS :

    GET @mystage/unload/data_0_0_0.csv.gz file:///data/unload;
    

    Windows :

    GET @mystage/unload/data_0_0_0.csv.gz file://C:\data\unload;
    

Déchargement de données vers une zone de préparation table

  1. Utilisez la commande COPY INTO <emplacement> pour décharger toutes les lignes d’une table dans un ou plusieurs fichiers dans la zone de préparation de la table. L’exemple suivant décharge les fichiers de données vers la zone de préparation en utilisant le format de fichier nommé my_csv_unload_format créé dans le fichier Préparation du déchargement de données. L’instruction ajoute le préfixe unload/ aux fichiers déchargés pour organiser les fichiers dans la zone de préparation :

    Par exemple :

    COPY INTO @%mytable/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
    

    Notez que la combinaison de caractères @% identifie une zone de préparation de table.

  2. Utilisez la commande LIST pour afficher une liste des fichiers qui ont été déchargés sur la zone de préparation :

    LIST @%mytable;
    
    +-----------------------+------+----------------------------------+-------------------------------+
    | name                  | size | md5                              | last_modified                 |
    |-----------------------+------+----------------------------------+-------------------------------|
    | unload/data_0_0_0.csv |   96 | 29918f18bcb35e7b6b628ca41024236c | Mon, 11 Sep 2017 17:45:20 GMT |
    +-----------------------+------+----------------------------------+-------------------------------+
    
  3. Utilisez la commande GET pour télécharger le(s) fichier(s) généré(s) de la table vers votre machine locale. L’exemple suivant télécharge les fichiers dans le répertoire data/unload :

    Par exemple :

    Linux ou macOS :

    GET @%mytable/unload/data_0_0_0.csv file:///data/unload;
    

    Windows :

    GET @%mytable/unload/data_0_0_0.csv file://C:\data\unload;
    

Déchargement de données vers votre zone de préparation utilisateur

  1. Utilisez la commande COPY INTO <emplacement> pour décharger toutes les lignes d’une table dans un ou plusieurs fichiers de votre zone de préparation. L’exemple suivant décharge les fichiers de données vers la zone de préparation utilisateur en utilisant le format de fichier nommé my_csv_unload_format créé dans le fichier Préparation du déchargement de données. L’instruction ajoute le préfixe unload/ aux fichiers déchargés pour organiser les fichiers dans la zone de préparation :

    Par exemple :

    COPY INTO @~/unload/ from mytable FILE_FORMAT = (FORMAT_NAME = 'my_csv_unload_format' COMPRESSION = NONE);
    

    Notez que la combinaison de caractères @~ identifie une zone de préparation utilisateur.

  2. Utilisez la commande LIST pour afficher une liste des fichiers qui ont été déchargés sur la zone de préparation :

    LIST @~;
    
    +-----------------------+------+----------------------------------+-------------------------------+
    | name                  | size | md5                              | last_modified                 |
    |-----------------------+------+----------------------------------+-------------------------------|
    | unload/data_0_0_0.csv |   96 | 94a306c55733b95a0887511ff355936b | Mon, 11 Sep 2017 17:25:07 GMT |
    +-----------------------+------+----------------------------------+-------------------------------+
    
  3. Utilisez la commande GET pour télécharger le(s) fichier(s) généré(s) de votre zone de préparation vers votre machine locale. L’exemple suivant télécharge les fichiers dans le répertoire data/unload :

    Par exemple :

    Linux ou macOS :

    GET @~/unload/data_0_0_0.csv file:///data/unload;
    

    Windows :

    GET @~/unload/data_0_0_0.csv file://C:\data\unload;
    

Gestion des fichiers de données déchargés

Les fichiers préparés peuvent être supprimés depuis une zone de préparation Snowflake à l’aide de la commande REMOVE servant à supprimer les fichiers de la zone de préparation une fois que vous avez terminé.

En supprimant les fichiers, vous améliorez les performances de chargement des données, car cela réduit le nombre de fichiers que la commande COPY INTO <table> doit analyser pour vérifier si des fichiers existants dans une zone de préparation ont déjà été chargés.