查询目录表

本主题介绍如何查询目录表以检索暂存区上所有文件的列表,其中包含每个文件的元数据,例如 Snowflake 文件 URL。

查询目录表的语法:

SELECT * FROM DIRECTORY( @<stage_name> )
Copy

其中:

stage_name

启用了目录表的暂存区名称。

有关 SELECT 语句以及语句中其他子句的信息,请参阅 Snowflake SQL 命令参考中的 查询语法

输出

目录表查询的输出可以包括以下列:

数据类型

描述

RELATIVE_PATH

TEXT

要使用文件 URL 访问的文件的路径。

SIZE

NUMBER

文件大小(以字节为单位)。

LAST_MODIFIED

TIMESTAMP_LTZ

上次在暂存区中更新文件的时间戳。

MD5

HEX

文件的 MD5 校验和。

ETAG

HEX

文件的 ETag 标头。

FILE_URL

TEXT

文件的 Snowflake 文件 URL。

文件 URL 具有以下格式:

https://<account_identifier>/api/files/<db_name>.<schema_name>.<stage_name>/<relative_path>
Copy

其中:

account_identifier

暂存区的 Snowflake 账户主机名。主机名以账户定位器(由 Snowflake 提供)开头,以 Snowflake 域 (snowflakecomputing.cn) 结尾:

account_locator.snowflakecomputing.cn

有关更多详细信息,请参阅 账户标识符

备注

对于 业务关键 账户,即使您的账户未启用与 Snowflake 服务的专用连接,也会在 URL 中的 snowflakecomputing.cn (privatelink.snowflakecomputing.cn) 之前附加 privatelink 段。

db_name

包含文件所在暂存区的数据库名称。

schema_name

包含文件所在暂存区的架构名称。

stage_name

文件所在暂存区的名称。

relative_path

要使用文件 URL 访问的文件的路径。

使用说明

  • 如果从内部暂存区下载的文件已损坏,请与暂存区创建者核实是否为该暂存区设置了 ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')

示例

以下示例检索名为 mystage 的暂存区目录表中的所有元数据列:

SELECT * FROM DIRECTORY(@mystage);
Copy

以下示例从大小超过 100 K 字节的文件中检索目录表的 FILE_URL 列值:

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;
Copy

以下示例从逗号分隔值文件中检索目录表的 FILE_URL 列值:

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';
Copy

使用目录表为非结构化数据创建视图

您可以将目录表与其他 Snowflake 表联接,以生成非结构化数据视图,这些数据将文件 URLs 与有关文件的元数据组合在一起。

下图说明了如何使用已启用目录表的暂存区以及单独的数据表为暂存区上的非结构化文件创建综合视图。

通过将目录表与另一个 Snowflake 表联接,创建非结构化数据的综合视图

示例:创建 PDF 文件及其数据的视图

下面的示例通过使用 file_url 键将名为 my_pdf_stage 的暂存区上的目录表与名为 report_metadata 的表相联接,创建了一个名为 reports_information 的视图。暂存区包含 PDF 报表,而 report_metadata 表包含有关每个 PDF 报表(例如 authorpublish_date)的结构化信息。生成的视图提供了一种获取有关非结构化 PDFs 及其相关结构化元数据的信息的方法。

CREATE VIEW reports_information AS
  SELECT
    file_url as report_link,
    author,
    publish_date,
    approved_date,
    geography,
    num_of_pages
  FROM directory(@my_pdf_stage) s
  JOIN report_metadata m
  ON s.file_url = m.file_url
Copy
语言: 中文