ADB支持通过CREATE TABLE创建表,也支持通过CTAS将查询到的数据写入新表中。

语法

CREATE TABLE [IF NOT EXISTS] <table_name> [table_definition]
[IGNORE|REPLACE] [AS] <query_statement>
说明 该建表方式默认与CREATE TABLE一致,支持语法也相同,例如默认为表创建全索引等。

参数

参数 说明
table_name 表名。

表名以字母或下划线(_)开头,可包含字母、数字以及下划线(_),长度为1到127个字符。

支持db_name.table_name格式,区分不同数据库下相同名字的表。

IF NOT EXISTS 判断table_name指定的表是否存在,若存在,则不执行建表语句。
IGNORE 可选参数,若表中已有相同主键的记录,新记录不会被写入。
REPLACE 可选参数,若表中已有相同主键的记录,新记录将替换已有相同主键的记录。

示例

CREATE TABLE customer (
customer_id bigint NOT NULL COMMENT '顾客ID',
customer_name varchar NOT NULL COMMENT '顾客姓名',
phone_num bigint NOT NULL COMMENT '电话',
city_name varchar NOT NULL COMMENT '所属城市',
sex int NOT NULL COMMENT '性别',
id_number varchar NOT NULL COMMENT '身份证号码',
home_address varchar NOT NULL COMMENT '家庭住址',
office_address varchar NOT NULL COMMENT '办公地址',
age int NOT NULL COMMENT '年龄',
login_time timestamp NOT NULL COMMENT '登录时间',
PRIMARY KEY (login_time,customer_id,phone_num)
 )
DISTRIBUTED BY HASH(customer_id)
PARTITION BY VALUE(DATE_FORMAT(login_time, '%Y%m%d')) LIFECYCLE 30
COMMENT '客户信息表';                   
INSERT INTO 
customer values
(002367,'李四','13678973421','杭州',0,'987300','西湖','转塘云栖小镇',23,'2018-03-02 10:00:00'),(002368,'张三','13878971234','杭州',0,'987300','西湖','转塘云栖小镇',28,'2018-08-01 11:00:00'),(002369,'王五','13968075284','杭州',1,'987300','西湖','转塘云栖小镇',35,'2018-09-12 08:11:00');                

通过以下SQL从CUSTOMER表中读取数据,并将数据写入新表NWE_CUSTOMER表中。

CREATE TABLE new_customer AS SELECT * FROM customer;
CREATE TABLE new_table AS SELECT a, b FROM base_table
CREATE TABLE new_table (PRIMARY KEY (a)) DISTRIBUTE BY HASH (b)
AS SELECT a, b FROM base_table
CREATE TABLE new_table (c varchar, PRIMARY KEY (a)) DISTRIBUTE BY HASH (b)
AS SELECT a, b, c FROM base_table
CREATE TABLE new_table (INDEX a_idx (a))
AS SELECT a, b, c FROM base_table