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

创建表时是否复制二级索引。

取值如下:

  • false:默认值,不复制二级索引。

  • true:复制二级索引。

COPY_SPLITKEYS

STRING

创建表时是否复制原表的分区起始Key。

取值如下:

  • true:复制原表的分区起始Key,原表中的数据分区规则也会被一并复制。

  • false:默认值,不复制。

示例

假设原表的结构如下:

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');