DESCRIBE

如果您想要新建结构相似的表或数据库,可以通过DESCRIBE语法获取原表或原数据库的结构。

适用引擎

DESCRIBE语法适用于宽表引擎和时序引擎。

语法

describe_statement ::= { DESCRIBE | DESC } [{ DATABASE | TABLE }] identifier

差异说明

宽表引擎和时序引擎对语法要素的支持情况如下:

语法要素

宽表引擎

时序引擎

DATABASE

✖️

TABLE

对象名称(identifier)

使用说明

DATABASE

时序引擎支持DATABASE关键字。

DESCRIBE中使用DATABASE关键字用于获取并返回数据库的结构。

TABLE

DESCRIBE中使用TABLE关键字用于获取并返回表的结构。需注意,宽表引擎和时序引擎返回的表结构信息并不完全相同。

对象名称(identifier

DESCRIBE语句中使用DATABASE关键字时默认identifier为数据库名,DESCRIBE语句中使用TABLE关键字时默认identifier为表名。如果DESCRIBE中未使用DATABASETABLE关键字,默认identifier为表名。例如DESCRIBE test;表示获取当前数据库下test表的结构。

示例

假设建表语句如下:

CREATE TABLE sensor (
    device_id VARCHAR NOT NULL,
    region VARCHAR NOT NULL,
    time TIMESTAMP NOT NULL,
    temperature DOUBLE,
    humidity BIGINT,
    PRIMARY KEY(device_id, region, time)
);

获取表结构

DESCRIBE TABLE sensor; -- 完整写法
DESC sensor; -- 缩略写法

宽表引擎返回结果如下:

+--------------+------------+-------------+-----------+----------------+------------+
| TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME |   TYPE    | IS_PRIMARY_KEY | SORT_ORDER |
+--------------+------------+-------------+-----------+----------------+------------+
| default      | sensor     | device_id   | VARCHAR   | true           | ASC        |
| default      | sensor     | region      | VARCHAR   | true           | ASC        |
| default      | sensor     | time        | TIMESTAMP | true           | ASC        |
| default      | sensor     | temperature | DOUBLE    | false          | none       |
| default      | sensor     | humidity    | BIGINT    | false          | none       |
+--------------+------------+-------------+-----------+----------------+------------+

时序引擎返回结果如下:

+-------------+-----------+------------+------------+--------------+
| columnName  | typeName  | columnKind | primaryKey | partitionTag |
+-------------+-----------+------------+------------+--------------+
| device_id   | VARCHAR   | TAG        | true       | true         |
| region      | VARCHAR   | TAG        | true       | true         |
| time        | TIMESTAMP | TIMESTAMP  | true       | false        |
| temperature | DOUBLE    | FIELD      | false      | false        |
| humidity    | BIGINT    | FIELD      | false      | false        |
+-------------+-----------+------------+------------+--------------+

获取数据库结构

获取时序数据库DB1的结构。

DESCRIBE DATABASE DB1;

返回结果如下:

+--------------------+-------+
|     attribute      | value |
+--------------------+-------+
| shard_num_per_node | 0     |
| skip_wal           | false |
| string_compression | false |
| cold_boundary      | 30    |
| partition_interval | 30    |
| ttl                | 60    |
| shard_num          | 0     |
+--------------------+-------+

返回结果说明:

  • shard_num_per_node:Database在每个节点使用的分片数量。默认值为1。

  • skip_wal:是否记录日志数据。默认值为false,即默认数据库记录日志数据。

  • string_compression:是否对STRING类型的数据进行压缩。默认值为false,即不压缩STRING数据。

  • shard_num:Database在集群中的分片总数。无默认值。

  • cold_boundary、partition_interval、ttl:CREATE DATABASE时设置的数据库属性,详细介绍,请参见数据库属性(attribute_definition)