DESCRIBE TABLE

描述表中的列或表的暂存区属性集(当前值以及默认值)。

DESCRIBE 可以缩写为 DESC。

另请参阅:

DROP TABLEALTER TABLECREATE TABLESHOW TABLES

DESCRIBE VIEW

语法

{ DESCRIBE | DESC } TABLE <name> [ TYPE =  { COLUMNS | STAGE } ]
Copy

参数

name

指定要描述的表的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

TYPE = COLUMNS | STAGE

指定是显示表的列,还是显示表的暂存属性集(当前值和默认值)。

默认:TYPE = COLUMNS

使用说明

  • 此命令不显示表的对象参数。请改用 SHOW PARAMETERS IN TABLE

  • DESCRIBE TABLE 和 DESCRIBE VIEW 可互换。两条命令均返回指定表或视图的详细信息;但 TYPE = STAGE 不适用于视图,因为视图没有暂存属性。

  • 如果在表上启用了架构演化,则输出将包含一个 SchemaEvolutionRecord 列。此列通过 2023_08 捆绑包(正式启用) 引入。有关更多信息,请参阅 表模式演化

  • 输出包括一个 policy name 列,用于指示在列上设置的 掩码策略

    如果未在该列上设置掩码策略,或者 Snowflake 账户不是 Enterprise Edition 或更高版本,Snowflake 将返回 NULL

  • 输出包括一个 privacy domain 列,用于指示在列上设置的 隐私域

    如果未在该列上设置隐私域,或者 Snowflake 账户不是 Enterprise Edition 或更高版本,Snowflake 将返回 NULL

  • 若要对此命令的输出进行后处理,可以使用 RESULT_SCAN 函数,该函数会将输出视为可查询的表。

输出

TYPE = COLUMNS 时,命令输出提供以下属性和元数据:

描述

name

表中列的名称。

type

表中列的数据类型。

kind

对于 Snowflake 表,此值始终为 COLUMN

null?

列是否接受 NULL 值(YN)。

default

列的默认值(如有)(否则为 NULL)。

primary key

列是否为主键(或多列主键的一部分;YN)。

unique key

列是否有 UNIQUE 约束(YN)。

check

保留以供将来使用。

expression

保留以供将来使用。

comment

列的注释集(如有)(否则为 NULL)。

policy name

为列设置的 掩码策略 </sql-reference/sql/create-masking-policy>`(如有)(否则为 ``NULL`)。

privacy domain

为列设置的 隐私域 </user-guide/diff-privacy/differential-privacy-privacy-domains>`(如有)(否则为 ``NULL`)。

schema evolution record

记录特定表列最新触发的架构演进信息。此列包含以下子字段:

  • EvolutionType:触发的架构演进的类型(ADD_COLUMN 或 DROP_NOT_NULL)。

  • EvolutionMode:触发引入机制(COPY 或 SNOWPIPE)。

  • FileName:触发演进的文件名。

  • TriggeringTime:列演化的大致时间。

  • QueryId 或 PipeID:触发查询或管道的唯一标识符(用于 COPY 的 QUERY ID 或用于 SNOWPIPE 的 PIPE ID)。

TYPE = STAGE 时,命令输出将提供表暂存属性的当前值和默认值。请参阅 示例:描述暂存属性

示例

如下示例展示了如何描述表。

示例:描述具有约束和其他列属性的表

创建一个包含五列的表,其中两列有约束。为一个列提供一个 DEFAULT 值和一个注释。

CREATE OR REPLACE TABLE desc_example(
  c1 INT PRIMARY KEY,
  c2 INT,
  c3 INT UNIQUE,
  c4 VARCHAR(30) DEFAULT 'Not applicable' COMMENT 'This column is rarely populated',
  c5 VARCHAR(100));
Copy

描述表中的列:

DESCRIBE TABLE desc_example;
Copy
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+-------------+----------------+-------------------------+
| name | type         | kind   | null? | default          | primary key | unique key | check | expression | comment                         | policy name | privacy domain | schema evolution record |
|------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+-------------+----------------+-------------------------|
| C1   | NUMBER(38,0) | COLUMN | N     | NULL             | Y           | N          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
| C2   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
| C3   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | Y          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
| C4   | VARCHAR(30)  | COLUMN | Y     | 'Not applicable' | N           | N          | NULL  | NULL       | This column is rarely populated | NULL        | NULL           | NULL                    |
| C5   | VARCHAR(100) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | NULL        | NULL           | NULL                    |
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+-------------+----------------+-------------------------+

示例:描述一个表,其中的某个列上有掩码策略

创建一个 普通掩码策略,随后使用在一列上设置的掩码策略重新创建 desc_example 表。(若要运行此示例,请先创建 email_mask 掩码策略。)

CREATE OR REPLACE TABLE desc_example(
  c1 INT PRIMARY KEY,
  c2 INT,
  c3 INT UNIQUE,
  c4 VARCHAR(30) DEFAULT 'Not applicable' COMMENT 'This column is rarely populated',
  c5 VARCHAR(100) WITH MASKING POLICY email_mask);
Copy
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+---------------------------------+----------------+-------------------------+
| name | type         | kind   | null? | default          | primary key | unique key | check | expression | comment                         | policy name                     | privacy domain | schema evolution record |
|------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+---------------------------------+----------------|-------------------------|
| C1   | NUMBER(38,0) | COLUMN | N     | NULL             | Y           | N          | NULL  | NULL       | NULL                            | NULL                            | NULL           | NULL                    |
| C2   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | NULL                            | NULL           | NULL                    |
| C3   | NUMBER(38,0) | COLUMN | Y     | NULL             | N           | Y          | NULL  | NULL       | NULL                            | NULL                            | NULL           | NULL                    |
| C4   | VARCHAR(30)  | COLUMN | Y     | 'Not applicable' | N           | N          | NULL  | NULL       | This column is rarely populated | NULL                            | NULL           | NULL                    |
| C5   | VARCHAR(100) | COLUMN | Y     | NULL             | N           | N          | NULL  | NULL       | NULL                            | HT_SENSORS.HT_SCHEMA.EMAIL_MASK | NULL           | NULL                    |
+------+--------------+--------+-------+------------------+-------------+------------+-------+------------+---------------------------------+---------------------------------+----------------+-------------------------+

示例:描述暂存属性

描述同一个表的当前暂存属性(此处仅显示前五行):

DESCRIBE TABLE desc_example TYPE = STAGE;
Copy
+--------------------+--------------------------------+---------------+-----------------+------------------+
| parent_property    | property                       | property_type | property_value  | property_default |
|--------------------+--------------------------------+---------------+-----------------+------------------|
| STAGE_FILE_FORMAT  | TYPE                           | String        | CSV             | CSV              |
| STAGE_FILE_FORMAT  | RECORD_DELIMITER               | String        | \n              | \n               |
| STAGE_FILE_FORMAT  | FIELD_DELIMITER                | String        | ,               | ,                |
| STAGE_FILE_FORMAT  | FILE_EXTENSION                 | String        |                 |                  |
| STAGE_FILE_FORMAT  | SKIP_HEADER                    | Integer       | 0               | 0                |
...
语言: 中文