Sélection 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 :
Vous devez spécifier une zone de préparation interne dans la commande PUT lorsque vous téléchargez des fichiers sur Snowflake.
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, utilisezLIST @~
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¶
Note
Les tables Apache Iceberg™ dans Snowflake ne prennent pas en charge les zones de préparation de table.
Par défaut, chaque table dispose d’une zone de préparation Snowflake qui lui est allouée pour le stockage des fichiers. Cette zone de préparation est appelée zone de préparation de table.
Vous pouvez utiliser une zone de préparation de tables si vous ne devez copier des fichiers que dans une seule table, mais que vous souhaitez rendre les fichiers accessibles à plusieurs utilisateurs.
Les zones de préparation de table présentent les caractéristiques et les limites suivantes :
Une zone de préparation de table porte le même nom que la table. Par exemple, une table nommée
mytable
possède une zone de préparation référencée comme@%mytable
.Une zone de préparation de table est une zone de préparation implicite liée à un objet de table. Il ne s’agit pas d’un objet distinct de la base de données. Par conséquent, une zone de préparation de table n’a pas de privilèges qui lui sont propres. Une zone de préparation de table n’est pas non plus appropriée si vous devez copier les données d’un fichier dans plusieurs tables.
Pour mettre des fichiers dans une zone de préparation de table, les répertorier ou les interroger, ou même les supprimer, vous devez être le propriétaire de la table (avoir le rôle doté du privilège OWNERSHIP sur la table).
Contrairement à une zone de préparation nommée, vous ne pouvez pas modifier ou supprimer une zone de préparation de table.
Les zones de préparation de tables ne prennent pas en charge la transformation de données lors du chargement (en utilisant une requête comme source pour la commande COPY).
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
Pour créer une zone de préparation interne, vous devez utiliser un rôle qui dispose des privilèges nécessaires ou qui en hérite. Pour plus de détails, voir Exigences en matière de contrôle d’accès pour CREATE STAGE.
Création d’une zone de préparation nommée à l’aide de 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 nommée qui utilise le chiffrement côté serveur :
CREATE STAGE my_int_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
Création d’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 :
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Create » Stage » Snowflake Managed.
Dans la boîte de dialogue Create Stage, entrez un Stage Name.
Sélectionnez la base de données et le schéma dans lesquels vous souhaitez créer la zone de préparation.
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.
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, utilisez 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, voir Chiffrement côté serveur pour l’accès à des données non structurées.
Complétez les champs pour décrire votre zone de préparation. Pour plus d’informations, voir CREATE STAGE.
Sélectionnez Create.
Création d’une zone de préparation nommée à l’aide de la console classique¶
Sélectionnez Databases » <nom_bd> » Stages.
Suivant : Mise en zone de préparation de fichiers de données à partir d’un système de fichiers local