TO_FILE¶
Construit une valeur de type FILE à partir de l’emplacement d’un fichier ou de métadonnées.
Syntaxe¶
Utilisez l’une des méthodes suivantes :
TO_FILE( <stage_name>, <relative_path> ) TO_FILE( <file_url> ) TO_FILE( <metadata> )
Arguments¶
stage_name
Le nom de la zone de préparation où se trouve le fichier, sous forme de chaîne, au format
‘@stage_name'
.relative_path
Le chemin d’accès au fichier de la zone de préparation spécifiée par
stage_name
sous forme de chaîne.file_url
Une zone de préparation ou une URL de fichier limitée valide sous la forme d’une chaîne.
metadata
Un OBJECT contenant les métadonnées FILE requises. Un FILE doit comporter les champs CONTENT_TYPE, SIZE, ETAG et LAST_MODIFIED. Il doit également spécifier l’emplacement du fichier de l’une des manières suivantes :
Les deux valeurs STAGE et RELATIVE_PATH
STAGE_FILE_URL
SCOPED_FILE_URL
Renvoie¶
Un FILE qui représente le fichier en zone de préparation.
Notes sur l’utilisation¶
Lève une erreur lorsque :
L’URL fournie n’est pas valide.
Le fichier se trouve sur une zone de préparation à laquelle l’utilisateur n’a pas l’autorisation d’accéder.
Les métadonnées fournies ne contiennent pas les champs FILE requis.
Exemples¶
Utilisation simple de la fonction TO_FILE avec une URL de fichier en zone de préparation :
SELECT TO_FILE(BUILD_STAGE_FILE_URL('@mystage', 'image.png'));
+--------------------------------------------------------------------------------------------------------------------+
| TO_FILE(BUILD_STAGE_FILE_URL('@MYSTAGE', 'IMAGE.PNG')) |
|--------------------------------------------------------------------------------------------------------------------|
| { |
| "CONTENT_TYPE": "image/png", |
| "ETAG": "..." |
| "LAST_MODIFIED": "Wed, 11 Dec 2024 20:24:00 GMT", |
| "RELATIVE_PATH": "image.png", |
| "SIZE": 105859, |
| "STAGE": "@MYDB.MYSCHEMA.MYSTAGE", |
| "STAGE_FILE_URL": "https://snowflake.account.snowflakecomputing.com/api/files/MYDB/MYSCHEMA/MYSTAGE/image.png" |
| } |
+--------------------------------------------------------------------------------------------------------------------+
Ou utilisez la fonction FILE_URL de la table répertoire de votre zone de préparation :
SELECT TO_FILE(file_url) FROM DIRECTORY(@mystage) LIMIT 1;
+--------------------------------------------------------------------------------------------------------------------+
| TO_FILE(FILE_URL) |
|--------------------------------------------------------------------------------------------------------------------|
| { |
| "CONTENT_TYPE": "image/png", |
| "ETAG": "..." |
| "LAST_MODIFIED": "Wed, 11 Dec 2024 20:24:00 GMT", |
| "RELATIVE_PATH": "image.png", |
| "SIZE": 105859, |
| "STAGE": "@MYDB.MYSCHEMA.MYSTAGE", |
| "STAGE_FILE_URL": "https://snowflake.account.snowflakecomputing.com/api/files/MYDB/MYSCHEMA/MYSTAGE/image.png" |
| } |
+--------------------------------------------------------------------------------------------------------------------+
Cet exemple utilise la fonction TO_FILE directement avec une URL de fichier limitée :
SELECT TO_FILE(`https://snowflake.account.snowflakecomputing.com/api/files/01ba4df2-0100-0001-0000-00040002e2b6/299017/Y6JShH6KjV`);
+------------------------------------------------------------------------------------------------------------------------------------------------+
| TO_FILE(https://snowflake.account.snowflakecomputing.com/api/files/01ba4df2-0100-0001-0000-00040002e2b6/299017/Y6JShH6KjV |
|------------------------------------------------------------------------------------------------------------------------------------------------|
| { |
| "CONTENT_TYPE": "image/png", |
| "ETAG": "..." |
| "LAST_MODIFIED": "Wed, 11 Dec 2024 20:24:00 GMT", |
| "SCOPED_FILE_URL": "https://snowflake.account.snowflakecomputing.com/api/files/01ba4df2-0100-0001-0000-00040002e2b6/299017/Y6JShH6KjV", |
| "SIZE": 105859 |
| } |
+-----------------------------------------------------------------------------------------------------------------------------------------------+|
Voici un exemple de construction d’un FILE à partir d’un objet contenant les métadonnées requises :
SELECT TO_FILE(OBJECT_CONSTRUCT('STAGE', 'MYSTAGE', 'RELATIVE_PATH', 'image.png', 'ETAG', '<ETAG value>',
'LAST_MODIFIED', 'Wed, 11 Dec 2024 20:24:00 GMT', 'SIZE', 105859, 'CONTENT_TYPE', 'image/png'));
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| TO_FILE(OBJECT_CONSTRUCT('STAGE', 'MYSTAGE', 'RELATIVE_PATH', 'IMAGE.PNG', 'ETAG', '<ETAG value>', 'LAST_MODIFIED', 'WED, 11 DEC 2024 20:24:00 GMT', 'SIZE', 105859, 'CONTENT_TYPE', 'IMAGE/PNG')) |
|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| { |
| "CONTENT_TYPE": "image/png", |
| "ETAG": "<ETAG value>>" |
| "LAST_MODIFIED": "Wed, 11 Dec 2024 20:24:00 GMT", |
| "RELATIVE_PATH": "image.png", |
| "SIZE": 105859, |
| "STAGE": "@MYDB.MYSCHEMA.MYSTAGE" |
| } |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Limitations connues¶
TO_FILE ne peut être utilisé dans la clause INSERT INTO TABLE <t> VALUES. Utilisez plutôt INSERT INTO TABLE <t> SELECT.
TO_FILE ne fonctionne pas pour l’instant avec les zones de préparation dont le nom comporte des guillemets doubles, par exemple @ »MYsTAgE ».