Choix d’une zone de préparation 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

Par défaut, chaque utilisateur et chaque table de Snowflake se voit automatiquement attribuer une zone de préparation interne pour préparer 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 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>.

  • 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 internes nommées

Les zones de préparation internes sont des objets de base de données nommées fournissant une grande flexibilité pour le chargement de données. Comme il s’agit d’objets de base de données, les règles de sécurité/accès qui s’appliquent à tous les objets s’appliquent :

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

  • La propriété de la zone de préparation peut être transférée à un autre rôle, et les privilèges accordés pour utiliser l’étape peuvent être modifiés pour ajouter ou supprimer des rôles.

  • Lorsque vous créez une zone de préparation, vous devez explicitement accorder des privilèges sur la zone de préparation à un ou plusieurs rôles avant que les utilisateurs avec ces rôles puissent utiliser la zone de préparation.

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 internes nommées sont facultatives, mais recommandés 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 ci-dessous.

Créer une zone de préparation

Vous pouvez créer une zone de préparation interne nommée en utilisant 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_format créé dans Préparation du chargement des données :

CREATE OR REPLACE STAGE my_stage
  FILE_FORMAT = my_csv_format;

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

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