CREATE TABLE LIKE
如果您需要快速创建一个与原表结构一致的新表时,可以使用CREATE TABLE LIKE完成表结构的复制和新表的创建。
引擎与版本
语法
create_table_statement ::= CREATE TABLE new_table_identifier LIKE old_table_identifier
[ WITH '(' like_option (',' like_option)* ')']
like_option ::= option_identifier '=' string_literal
使用说明
CREATE TABLE LIKE语法可以复制表结构,但不会复制原表中的数据。
新表(new_table_identifier)
创建新表时,关于表名您需要注意以下内容:
可包含数字、大写英文字符、小写英文字符、半角句号(.)、中划线(-)和下划线(_)。
表名不能以半角句号(.)或中划线(-)开头。
表名的长度为1~255字符。
原表(old_table_identifier)
您可以通过DESCRIBE
语法查看原表的表结构,详细介绍,请参见DESCRIBE/SHOW/USE。
复制项(like_option)
您可以通过WITH
关键字指定额外复制项。
支持的复制项参数如下:
参数 | 类型 | 描述 |
COPY_INDEX | STRING | 创建表时是否复制二级索引。 取值如下:
|
COPY_SPLITKEYS | STRING | 创建表时是否复制原表的分区起始Key。 取值如下:
|
示例
假设原表的结构如下:
CREATE TABLE sensor(
p1 INT NOT NULL,
p2 INT NOT NULL,
c1 VARCHAR,
c2 BIGINT,
PRIMARY KEY(p1, p2)
) WITH (SPLITKEYS = '100000,300000,500000,700000,900000');
复制表结构
创建一张与表sensor
具有相同表结构的表table2
。
CREATE TABLE table2 LIKE sensor;
复制表结构和分区起始Key
CREATE TABLE table2 LIKE sensor WITH (COPY_SPLITKEYS='true');