TO_FILE¶
Constrói um valor do tipo FILE a partir de um local de arquivo ou de metadados.
Sintaxe¶
Use uma das seguintes opções:
TO_FILE( <stage_name>, <relative_path> ) TO_FILE( <file_url> ) TO_FILE( <metadata> )
Argumentos¶
stage_name
O nome do estágio em que o arquivo está localizado, como uma cadeia de caracteres, no formato
'@stage_name'
.relative_path
O caminho para o arquivo no estágio especificado por
stage_name
como uma cadeia de caracteres.file_url
Um URL de arquivo com escopo ou estágio válido como uma cadeia de caracteres.
metadata
Um OBJECT contendo os metadados necessários do FILE. Um FILE deve ter os campos CONTENT_TYPE, SIZE, ETAG e LAST_MODIFIED. Ele também deve especificar o local do arquivo de uma das seguintes maneiras:
Tanto STAGE quanto RELATIVE_PATH
STAGE_FILE_URL
SCOPED_FILE_URL
Retornos¶
Um FILE que representa o arquivo preparado.
Notas de uso¶
Gera um erro quando:
O URL fornecido não é válido.
O arquivo está em um estágio que o usuário não tem permissão para acessar.
Os metadados fornecidos não contêm os campos obrigatórios do FILE.
Exemplos¶
Um uso simples da função TO_FILE com um o URL do arquivo preparado:
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 use o endereço FILE_URL da tabela de diretórios de seu estágio:
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" |
| } |
+--------------------------------------------------------------------------------------------------------------------+
Este exemplo usa a função TO_FILE diretamente com um URL do arquivo com escopo:
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 |
| } |
+-----------------------------------------------------------------------------------------------------------------------------------------------+|
Isso mostra um exemplo de construção de um FILE a partir de um objeto que contém os metadados necessários:
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" |
| } |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Limitações conhecidas¶
TO_FILE não pode ser usado na cláusula INSERT INTO TABLE <t> VALUES. Em vez disso, use INSERT INTO TABLE <t> SELECT.
TO_FILE atualmente não funciona com estágios com nomes de estágios entre aspas duplas, por exemplo, @»MYsTAgE».