Choix d’une zone de préparation interne pour les fichiers locaux

Une zone de préparation indique où les fichiers de données sont stockés (c’est-à-dire « préparés ») afin que les données contenues dans les fichiers puissent être chargées dans une table.

Dans ce chapitre :

Types de zones de préparation internes

Snowflake prend en charge les types de zones de préparation internes suivants :

  • Utilisateur

  • Table

  • Nommé

Par défaut, chaque utilisateur et chaque table de Snowflake se voit automatiquement attribuer une zone de préparation interne pour mettre en zone de préparation des fichiers de données à charger. En outre, vous pouvez créer des zones de préparation internes nommées.

Des informations sur l’échelonnage de fichiers sont requises pendant les deux étapes du processus de chargement des données :

  1. Vous devez spécifier une zone de préparation interne dans la commande PUT lorsque vous téléchargez des fichiers sur Snowflake.

  2. Vous devez spécifier la même zone de préparation dans la commande COPY INTO <table> lors du chargement de données dans une table à partir des fichiers préparés.

Considérez le meilleur type de zone de préparation pour des fichiers de données spécifiques. Chaque option présente des avantages et des inconvénients potentiels.

Zones de préparation utilisateur

Chaque utilisateur dispose d’une zone de préparation Snowflake qui lui est allouée par défaut pour le stockage des fichiers. Cette zone de préparation est pratique si vos fichiers ne sont accessibles que par un seul utilisateur, mais doit être copiée dans plusieurs tables.

Les mises en zone de préparation utilisateur présentent les caractéristiques et les limitations suivantes :

  • Les mises en zone de préparation utilisateur sont référencées avec @~ ; par exemple, utilisez LIST @~ pour répertorier les fichiers d’une zone de préparation utilisateur.

  • Contrairement aux zones de préparation nommées, les zones de préparation utilisateur ne peuvent être ni modifiées ni détruites.

  • Les zones de préparation utilisateur ne prennent pas en charge la définition des options de format de fichier. En revanche, vous devez spécifier le format de fichier et les options de copie dans le cadre de la commande COPY INTO <table>.

Cette option n’est pas appropriée si :

  • Plusieurs utilisateurs doivent avoir accès aux fichiers.

  • L’utilisateur actuel n’a pas INSERT de privilèges sur les tables dans lesquelles les données seront chargées.

Zones de préparation de la table

Chaque table dispose d’une zone de préparation Snowflake qui lui est allouée par défaut pour le stockage des fichiers. Cette zone de préparation est une option pratique si vos fichiers doivent être accessibles à plusieurs utilisateurs et ne doivent être copiés que dans une seule table.

Les zones de préparation de table présentent les caractéristiques et les limites suivantes :

  • Les zones de préparation de table présentent le même nom que la table ; par exemple, une table nommée mytable a une zone de préparation référencée comme @%mytable.

  • Contrairement aux zones de préparation nommées, les zones de préparation de table ne peuvent être ni modifiées ni détruites.

  • Les zones de préparation de table ne prennent pas en charge la transformation de données lors du chargement (c.-à-d. en utilisant une requête comme source pour la commande COPY).

Notez qu’une zone de préparation de table n’est pas un objet de base de données distinct, mais plutôt une étape implicite liée à la table elle-même. Une zone de préparation de table n’a pas de privilèges qui lui sont propres. Pour préparer des fichiers dans une zone de préparation de table, les répertorier ou les interroger, ou même les détruire, vous devez être le propriétaire de la table (avoir le rôle doté du privilège OWNERSHIP sur la table).

Cette option n’est pas appropriée si vous devez copier les données des fichiers dans plusieurs tables.

Zones de préparation nommées

Les zones de préparation nommées sont des objets de base de données fournissant une grande flexibilité pour le chargement de données :

  • Les utilisateurs disposant des privilèges appropriés sur la zone de préparation peuvent charger des données dans n’importe quelle table.

  • Comme la zone de préparation est un objet de base de données, les règles de sécurité/d’accès qui s’appliquent à tous les objets s’appliquent. Les privilèges d’utilisation d’une zone de préparation peuvent être accordés ou révoqués à partir de rôles. En outre, la propriété de la zone de préparation peut être transférée à un autre rôle.

Si vous prévoyez de préparer des fichiers de données qui ne seront chargés que par vous, ou qui ne seront chargés que dans une seule table, vous préférerez peut-être simplement utiliser votre zone de préparation utilisateur ou la zone de préparation de la table dans laquelle vous allez charger les données.

Les zones de préparation nommées sont facultatives, mais recommandées lorsque vous planifiez des charges de données régulières qui pourraient impliquer plusieurs utilisateurs et/ou tables. Pour des instructions sur la création d’une zone de préparation nommée, voir Création d’une zone de préparation nommée ci-dessous.

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

Vous pouvez créer une zone de préparation interne nommée en utilisant SQL ou l’interface Web.

Note

Vous devez utiliser un rôle qui bénéficie ou hérite du privilège USAGE sur la base de données et le schéma qui stockent la zone de préparation et du privilège CREATE STAGE sur le schéma.

Reportez-vous à Exigences en matière de contrôle d’accès pour CREATE STAGE.

Créer une zone de préparation nommée avec SQL

Utilisez la commande CREATE STAGE pour créer une zone de préparation nommée avec SQL.

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_format créé dans Préparation du chargement des données :

CREATE OR REPLACE STAGE my_stage
  FILE_FORMAT = my_csv_format;
Copy

Note

En spécifiant un objet de format de fichier nommé (ou des options de format de fichier individuelles) pour la zone de préparation, il n’est pas nécessaire de spécifier ultérieurement les mêmes options de format de fichier dans la commande COPY utilisée pour charger les données de la zone de préparation.

L’exemple suivant crée une zone de préparation interne qui spécifie des options de format de fichier ad hoc plutôt que de faire référence à un format de fichier nommé. Les fichiers de données de cette zone de préparation ont un format CSV et un délimiteur de champ de type barre verticale (|). Lorsque cette zone de préparation est référencée, la commande COPY ignore la première ligne dans les fichiers de données :

CREATE OR REPLACE STAGE my_stage
  file_format = (type = 'CSV' FIELD_DELIMITER = '|' SKIP_HEADER = 1);
Copy

Créer une zone de préparation nommée à l’aide de Snowsight

Pour utiliser Snowsight afin de créer une zone de préparation interne nommée, procédez comme suit :

  1. Connectez-vous à Snowsight.

  2. Sélectionnez Data » Databases.

  3. Sélectionnez la base de données et le schéma dans lesquels vous souhaitez créer une zone de préparation.

  4. Sélectionnez Create » Stage » Snowflake Managed.

  5. Entrez un Stage Name.

  6. Vous pouvez également désélectionner Directory table. Les tables de répertoire permettent de voir les fichiers sur la zone de préparation, mais elles nécessitent un entrepôt et ont donc un coût. Vous pouvez choisir de désélectionner cette option pour l’instant et d’activer une table de répertoire ultérieurement.

  7. Sélectionnez le type de Encryption pris en charge pour tous les fichiers sur votre zone de préparation. Pour plus de détails, voir chiffrement pour les zones de préparation internes. Vous ne pouvez pas modifier le type de chiffrement après la création de la zone de préparation.

    Note

    Pour permettre l’accès aux données, nous vous recommandons de sélectionner le chiffrement côté serveur. Sinon, les fichiers en zone de préparation sont chiffrés par défaut côté client et illisibles lorsqu’ils sont téléchargés. Pour plus d’informations, consultez Chiffrement côté serveur pour les accès à des données non structurés..

  8. Complétez les champs pour décrire votre zone de préparation. Pour plus d’informations, reportez-vous à CREATE STAGE.

  9. Sélectionnez Create.

Créer une zone de préparation nommée avec la console classique

Sélectionnez Databases Databases tab » <nom_bd> » Stages.

Suivant : Mise en zone de préparation des fichiers de données à partir d’un système de fichiers local