TO_FILE¶
Constructs a value of type FILE from a stage URL or from metadata.
Syntax¶
Use one of the following:
TO_FILE( <scoped_url> ) TO_FILE( <metadata> )
Arguments¶
scoped_url
A valid scoped file URL.
metadata
An OBJECT containing all the required FILE metadata.
Returns¶
A FILE that represents the staged file.
Usage notes¶
Raises an error when:
The supplied URL is not validL.
The file is on a stage that the user has no permissions to access.
The supplied metadata doesn’t contain the required FILE fields.
Examples¶
A simple use of the TO_FILE function with a staged file URL:
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" |
| } |
+--------------------------------------------------------------------------------------------------------------------+
Or use the FILE_URL from directory table of your stage:
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" |
| } |
+--------------------------------------------------------------------------------------------------------------------+
This example uses TO_FILE function directly with a scoped file URL:
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 |
| } |
+-----------------------------------------------------------------------------------------------------------------------------------------------+|
This shows an example of constructing a FILE from an object containing the required metadata:
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" |
| } |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Known limitations¶
TO_FILE cannot be used in INSERT INTO TABLE <t> VALUES clause. Use INSERT INTO TABLE <t> SELECT instead.
TO_FILE does not currently work with stages with double quoted stage names e.g. @”MYsTAgE”.