TO_FILE

Erstellt einen Wert vom Typ FILE aus einem Dateispeicherort oder aus Metadaten.

Syntax

Verwenden Sie eine der folgenden Optionen:

TO_FILE( <stage_name>, <relative_path> )

TO_FILE( <file_url> )

TO_FILE( <metadata> )

Argumente

stage_name

Der Name des Stagingbereichs, in dem sich die Datei befindet, als Zeichenfolge im Format '@stage_name'.

relative_path

Der Pfad zu der Datei im durch stage_name als Zeichenfolge angegebenen Stagingbereich.

file_url

Ein gültiger Stagingbereich oder eine Bereichsdatei-URL als Zeichenfolge.

metadata

Ein OBJECT mit den erforderlichen FILE-Metadaten. Eine FILE muss die Felder CONTENT_TYPE, SIZE, ETAG und LAST_MODIFIED enthalten. Außerdem muss der Speicherort der Datei auf eine der folgenden Arten angegeben sein:

  • Sowohl STAGE als auch RELATIVE_PATH

  • STAGE_FILE_URL

  • SCOPED_FILE_URL

Rückgabewerte

Eine FILE, die die Stagingdatei darstellt.

Nutzungshinweise

Gibt in den folgenden Fällen einen Fehler aus:

  • Die angegebene URL ist nicht gültig.

  • Die Datei befindet sich in einem Stagingbereich, für den der Benutzer keine Zugriffsberechtigung hat.

  • Die angegebenen Metadaten enthalten nicht die erforderlichen FILE-Felder.

Beispiele

Eine einfache Anwendung der Funktion TO_FILE mit einer Stagingdatei-URL:

SELECT TO_FILE(BUILD_STAGE_FILE_URL('@mystage', 'image.png'));
Copy
+--------------------------------------------------------------------------------------------------------------------+
| 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"   |
| }                                                                                                                  |
+--------------------------------------------------------------------------------------------------------------------+

Oder verwenden Sie die FILE_URL aus der Verzeichnistabelle Ihres Stagingbereichs:

SELECT TO_FILE(file_url) FROM DIRECTORY(@mystage) LIMIT 1;
Copy
+--------------------------------------------------------------------------------------------------------------------+
| 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"   |
| }                                                                                                                  |
+--------------------------------------------------------------------------------------------------------------------+

In diesem Beispiel wird die Funktion TO_FILE direkt mit einer Bereichsdatei-URL verwendet:

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                                                                                                                               |
| }                                                                                                                                              |
+-----------------------------------------------------------------------------------------------------------------------------------------------+|
Copy

Hier sehen Sie ein Beispiel für die Erstellung einer FILE aus einem Objekt, das die erforderlichen Metadaten enthält:

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"                                                                                                                                                                |
| }                                                                                                                                                                                                  |
+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Copy

Bekannte Einschränkungen

  • TO_FILE kann nicht in der Klausel INSERT INTO TABLE <t> VALUES verwendet werden. Verwenden Sie stattdessen INSERT INTO TABLE <t> SELECT.

  • TO_FILE funktioniert derzeit nicht mit Stagingbereichen, deren Namen in doppelten Anführungszeichen stehen, z. B. @“MYsTAgE“.