Lire les fichiers à l’aide d’une procédure stockée Java¶
Vous pouvez lire le contenu d’un fichier avec le code du gestionnaire. Le fichier doit se trouver sur une zone de préparation Snowflake qui est disponible pour votre gestionnaire. Par exemple, vous pourriez vouloir lire un fichier pour traiter des données non structurées dans le gestionnaire.
Pour lire le contenu des fichiers en zone de préparation, votre gestionnaire peut appeler des méthodes de la classe SnowflakeFile ou de la classe InputStream. Vous pouvez le faire si vous avez besoin d’accéder au fichier de manière dynamique pendant le calcul. Pour plus d’informations, voir Lecture d’un fichier spécifié de façon dynamique avec SnowflakeFile ou Lecture d’un fichier spécifié de façon dynamique avec InputStream dans cette rubrique.
SnowflakeFile offre des fonctionnalités non disponibles avec InputStream, comme décrit dans le tableau suivant.
Classe |
Entrée |
Remarques |
|---|---|---|
|
Formats d’URL :
Le fichier doit être situé dans une zone de préparation interne ou externe nommée. |
Accédez facilement à des attributs de fichier supplémentaires, tels que la taille du fichier. |
|
Formats d’URL :
Le fichier doit être situé dans une zone de préparation interne ou externe nommée. |
Lecture d’un fichier spécifié de façon dynamique avec SnowflakeFile¶
Le code de l’exemple suivant comporte une fonction de gestionnaire execute qui prend un String et renvoie un String avec le contenu du fichier. Au moment de l’exécution, Snowflake initialise la variable fileName du gestionnaire à partir du chemin du fichier entrant dans la variable input de la procédure. Le code du gestionnaire utilise une instance SnowflakeFile pour lire le fichier.
Le code de l’exemple CALL suivant crée une URL de fichier scopée qui pointe vers le fichier. Il s’agit d’une URL encodée qui permet un accès temporaire à un fichier en zone de préparation sans accorder de privilèges à la zone de préparation en soi.
Note
Pour une procédure stockée avec droits du propriétaire, le propriétaire de la procédure doit avoir accès à tous les fichiers qui ne sont pas des URLs scopées. Pour les procédures de droits de l’appelant, l’appelant doit avoir accès à tous les fichiers qui ne sont pas des URLs scopées. Dans les deux cas, vous pouvez lire le fichier en zone de préparation en demandant au code du gestionnaire d’appeler la méthode SnowflakeFile.newInstance avec une valeur boolean pour un nouveau paramètre requireScopedUrl.
L’exemple suivant utilise SnowflakeFile.newInstance tout en spécifiant qu’une URL scopée n’est pas nécessaire.
Lecture d’un fichier spécifié de façon dynamique avec InputStream¶
Le code de l’exemple suivant comporte une fonction de gestionnaire execute qui prend un InputStream et renvoie un String avec le contenu du fichier. Au moment de l’exécution, Snowflake initialise la variable stream du gestionnaire à partir du chemin du fichier entrant dans l’argument input de la procédure. Le code du gestionnaire utilise le InputStream pour lire le fichier.
Le code de l’exemple CALL suivant crée une URL de fichier scopée qui pointe vers le fichier. Il s’agit d’une URL encodée qui permet un accès temporaire à un fichier en zone de préparation sans accorder de privilèges à la zone de préparation en soi.