福建八大员建设厅延续的网站,网站用哪些系统做的比较好用,南宁网站规划与网页设计,酒店网站建设与设计公司一、简介
本文章主讲创建 Doris 自维护的表的语法#xff0c;以下为本人最近为数据中台接入doris所踩的坑及其解决方案#xff0c;欢迎点评。
二、doris建表语法#xff1a;
官网建表语法网址链接#xff1a;CREATE-TABLE - Apache Doris
官网建表语法如图所示#xf…一、简介
本文章主讲创建 Doris 自维护的表的语法以下为本人最近为数据中台接入doris所踩的坑及其解决方案欢迎点评。
二、doris建表语法
官网建表语法网址链接CREATE-TABLE - Apache Doris
官网建表语法如图所示 目前我们常见建表主要使用字段列column_definition_list、引擎engine_type、主键设置keys_type、表注释table_comment、分桶distribution_desc。以下建表示例主要涵盖上面所列。
三、个人建表示例
-- test_db.student definitionCREATE TABLE IF NOT EXISTS test_db.student (stu_num bigint(20) NULL COMMENT 学生ID编号,gmt_create datetime NOT NULL COMMENT 创建时间,gmt_modified datetime NOT NULL COMMENT 修改时间,op_create_id bigint(20) NOT NULL COMMENT 创建人id,op_modified_id bigint(20) NOT NULL COMMENT 更新人id,op_create_name varchar(32) NOT NULL COMMENT 创建人名称,op_modified_name varchar(32) NOT NULL COMMENT 修改人名称,stu_name varchar(32) NOT NULL COMMENT 学生姓名,stu_class_name char NULL COMMENT 学生班级
) ENGINEOLAP
UNIQUE KEY(stu_num)
COMMENT 学生表
DISTRIBUTED BY HASH(stu_num) BUCKETS 32
PROPERTIES (
replication_allocation tag.location.default: 3,
is_being_synced false,
storage_format V2,
light_schema_change true,
disable_auto_compaction false,
enable_single_replica_compaction false
);
建表拆解
1、字段设置
语法顺序字段名 字段类型有长度就带长度无长度使用默认 是否非空 默认值DEFAULT后面加上默认值默认值要用双引号 字段注释。
注意如果是decimal类型的要注意字段长度和小数点范围[(precision, scale)] precision: 1 ~ 27 scale: 0 ~ 9。
坑一字段设置顺序必须按这个语法来。
坑二目前按我使用的doris数据库建表来看暂时不支持自增字段AUTO_INDREMENT设置否则会报错SQL 错误 [1105] [HY000]: errCode 2, detailMessage auto increment column is not supported currently. 翻译过来就是currently not supported auto increment 当前不支持自增。
#语法
stu_num bigint(20) NOT NULL DEFAULT 0 COMMENT 学生号码,
2、引擎类型设置
#设置引擎
ENGINEOLAP
3、设置主键列
坑一如果设置主键列那么主键列必须排在其他字段前面否则会报错该字段前面还有其他字段。
坑二浮点数double和float不能作为主键列string类型也不建议用作主键列。
#设置主键列
UNIQUE KEY(stu_num)
4、表注释
#表注释
COMMENT 学生表
5、分桶列一个doris自建表可以没有分区列但必须拥有分桶列。
坑一如果设置了主键列那么分桶列必须使用主键列字段否则可以使用非主键列字段。
坑二设置的分桶列必须按字段设置的顺序进行排序如设置了字段k1,k2,k3那么分桶列也得(k1,k2,k3)否则建表会报异常k3前面还有字段。
6、PROPERTIES 参数设置
这个一般使用默认值如需使用可以参考官网。
7、关于double、float和string类型的字段长度问题
在创建doris表时double、float和string类型不要给长度否则会报错。其中string类型是超长度类型在doris数据库中varchar类型最长是65533而string类型没有限制因此在作为数据同步迁移的时候string类型对应于其他数据库超长度类型如mysql的longtext。
语法示例
money double not null comment 金钱num float not null comment 数量remark double not null comment 备注
四、调整表结构
目前实验结果支持修改表名、表注释、字段类型修改新增字段字段注释修改支持非空修改为空反之不行主键列不允许修改非空或者不非空的设置。标签字段类型修改时要符合转换规则。
1、字段类型转换规范
TINYINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE 类型向范围更大的数字类型转换TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE/DECIMAL 转换成 VARCHARVARCHAR 支持修改最大长度VARCHAR/CHAR 转换成 TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLEVARCHAR/CHAR 转换成 DATE (目前支持%Y-%m-%d, %y-%m-%d, %Y%m%d, %y%m%d, %Y/%m/%d, %y/%m/%d六种格式化格式)DATETIME 转换成 DATE(仅保留年-月-日信息, 例如: 2019-12-09 21:47:05 -- 2019-12-09)DATE 转换成 DATETIME(时分秒自动补零 例如: 2019-12-09 -- 2019-12-09 00:00:00)FLOAT 转换成 DOUBLEINT 转换成 DATE (如果INT类型数据不合法则转换失败原始数据不变)除DATE与DATETIME以外都可以转换成STRING但是STRING不能转换任何其他类型
2、 修改表名
#修改表名
ALTER TABLE student RENAME student2;
3、修改表注释
#修改表注释
ALTER TABLE student MODIFY COMMENT 学生信息表
4、修改字段类型和注释、新增字段、删除字段
坑一删除字段不能用来删除主键和分桶列。
坑二无法修改字段名因此建表时要设计好字段名称。
#修改字段类型和注释
ALTER TABLE test_db.student
MODIFY COLUMN stu_class_name VARCHAR(32) COMMENT 学生班级名称;#新增字段
ALTER TABLE test_db.student
ADD COLUMN stu_scope INT NOT NULL DEFAULT 0 COMMENT 学生成绩;#删除字段
ALTER TABLE test_db.student
DROP COLUMN stu_scope;