Doris数据库---建表、调整表结构操作

news2024/11/13 19:20:01

一、简介

本文章主讲创建 Doris 自维护的表的语法,以下为本人最近为数据中台接入doris所踩的坑及其解决方案,欢迎点评。

二、doris建表语法:

官网建表语法网址链接:CREATE-TABLE - Apache Doris

官网建表语法如图所示:

目前我们常见建表主要使用字段列(column_definition_list)、引擎(engine_type)、主键设置(keys_type)、表注释(table_comment)、分桶(distribution_desc)。以下建表示例主要涵盖上面所列。 

三、个人建表示例:

-- test_db.student definition

CREATE 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 '学生班级'
) ENGINE=OLAP
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、引擎类型设置:

#设置引擎
ENGINE=OLAP

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 转换成 VARCHAR
  • VARCHAR 支持修改最大长度
  • VARCHAR/CHAR 转换成 TINTINT/SMALLINT/INT/BIGINT/LARGEINT/FLOAT/DOUBLE
  • VARCHAR/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 转换成 DOUBLE
  • INT 转换成 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`;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1911286.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何查找指定的node版本

1.打开网站 “Node.js — Run JavaScript EverywhereNode.js is a JavaScript runtime built on Chromes V8 JavaScript engine.https://nodejs.org/2. 3. 4.

运动爱好者的新选择:哈氪聆光气传导耳机,轻巧又安全

平时不管是漫步街头、骑行穿梭&#xff0c;还是乘坐公共交通时&#xff0c;我总是喜欢佩戴耳机&#xff0c;借此隔绝外部的喧嚣&#xff0c;享受音乐的乐趣。在户外使用耳机&#xff0c;我更倾向于选择气传导耳机&#xff0c;它们更符合我的需求&#xff0c;因为这种耳机能让我…

Hi3861鸿蒙开发环境搭建

1.1 安装配置Visual Studio Code 打开Download Visual Studio Code - Mac, Linux, Windows选择下载安装Windows系统的Visual Studio Code。 下载后进行安装。Visual Studio Code安装完成后&#xff0c;通过内置的插件市场搜索并安装开发所需的插件如图所示&#xff1a; 1.2 安…

OpenCV对图片中的水果进行识别计算其面积长度等

本项目所用到的技术有&#xff1a; OpenCV Python的一些库&#xff1a;sys,openpyxl,numpy,PyQt5,PIL 本文可以做一些课程设计的项目 本文为作者原创&#xff0c;转载请注明出处&#xff0c;如果需要完整的代码&#xff0c;可以关注我私信 上面是用到的样例图片&#xff0c;一张…

万字总结GBDT原理、核心参数以及调优思路

万字总结GBDT原理、核心参数以及调优思路 在机器学习领域&#xff0c;梯度提升决策树&#xff08;Gradient Boosting Decision Tree, GBDT&#xff09;以其卓越的预测性能和强大的模型解释能力而广受推崇。GBDT通过迭代地构建决策树&#xff0c;每一步都在前一步的残差上进行优…

39 线程库

目录 thread类的简单介绍线程函数参数锁线程交替打印原子性操作库无锁CAS智能指针的线程安全单例模式的线程安全 1. thread类的简单介绍 在c11之前&#xff0c;涉及到多线程问题&#xff0c;都是和平台相关的&#xff0c;如windows和linux下各有自己的接口&#xff0c;这使得…

基于SpringBoot的网上书城管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;基于SpringBoot框架 工具&#xff1a;Eclipse&#xff0c;MySQL 系统展示 首…

数图助推朝阳佳惠辽宁华联开启数字化导航、精细化管理新纪元!

近期&#xff0c;辽宁省著名零售企业朝阳佳惠与辽宁华联&#xff0c;秉持创新精神&#xff0c;大胆尝试&#xff0c;在品类空间管理方面推出了创新举措。引入了先进的数图可视化陈列管理系统&#xff0c;通过智能化、直观化的方式优化商品布局。此举不仅大幅提高了商品管理的效…

探索Qt的QVariant:灵活的数据交换机制

&#x1f60e; 作者介绍&#xff1a;欢迎来到我的主页&#x1f448;&#xff0c;我是程序员行者孙&#xff0c;一个热爱分享技术的制能工人。计算机本硕&#xff0c;人工制能研究生。公众号&#xff1a;AI Sun&#xff08;领取大厂面经等资料&#xff09;&#xff0c;欢迎加我的…

windows的远程桌面连接docker

1. Docker容器中运行远程桌面服务 (RDP)&#xff1a;您的Docker容器需要安装和运行远程桌面服务。通常&#xff0c;远程桌面服务在Windows操作系统上可用。如果您使用的是Linux容器&#xff0c;则需要安装一个支持RDP协议的桌面环境和RDP服务器。 2. 开放RDP端口&#xff1a;通…

【正点原子i.MX93开发板试用连载体验】项目计划和开箱体验

本文最早发表于电子发烧友&#xff1a;【   】【正点原子i.MX93开发板试用连载体验】基于深度学习的语音本地控制 - 正点原子学习小组 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)https://bbs.elecfans.com/jishu_2438354_1_1.html 有一段时间没有参加电子发…

Java泛型的定义与运用

泛型 泛型的作用从使用层面上来说是统一数据类型&#xff0c;防止将来的数据转换异常。从定义层面上来说&#xff0c;定义带泛型的类&#xff0c;方法等&#xff0c;将来使用的时候给泛型确定什么类型&#xff0c;泛型就会变成什么类型&#xff0c;凡是涉及到泛型的都会变成确…

飞时达土方计算软件:工程师的得力助手

初识飞时达 飞时达土方计算软件&#xff0c;如同一位默默无闻的工匠&#xff0c;静静地伫立在我的工作台上。它没有华丽的外表&#xff0c;也没有炫目的光环&#xff0c;但它的存在&#xff0c;却如同一盏明灯&#xff0c;照亮了我前行的道路。 初识飞时达&#xff0c;是在一…

Word文件打开密码设置:掌握这两种方法,保护你的文档安全

在日常工作和学习中&#xff0c;我们经常会使用Microsoft Word来创建和编辑文档。有时候&#xff0c;为了保护文档内容不被未经授权的人员查看或修改&#xff0c;我们通常会采用加密的方式来增加其安全性。那么Word文档怎么加密&#xff1f; 方法一&#xff1a;使用Word软件内置…

GTK是如何加密WLAN组播和广播数据的?

1. References WLAN 4-Way Handshake如何生成GTK&#xff1f;_tk bigtk gtk igtk-CSDN博客 2. 概述 在Wi-Fi网络中&#xff0c;单播、组播和广播帧的加密算法是由AP决定的。其中组播帧和广播帧的加密使用GTK密钥&#xff0c;其PTK的密钥结构如下图所示&#xff1a; GTK的组成…

【技术选型】FastDFS、OSS如何选择

【技术选型】FastDFS、OSS如何选择 开篇词&#xff1a;干货篇&#xff1a;FastDFS&#xff1a;OSS&#xff08;如阿里云OSS&#xff09;&#xff1a; 总结篇&#xff1a;我是杰叔叔&#xff0c;一名沪漂的码农&#xff0c;下期再会&#xff01; 开篇词&#xff1a; 文件存储该选…

YOLOv8改进 | 注意力机制 | 对密集和小目标友好的EVAblock 【原理 + 完整代码】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

Open3D SVD算法实现对应点集配准

目录 一、概述 1.1基本思想 1.2实现步骤 二、代码实现 三、实现效果 3.1原始点云 3.2配准后点云 3.3变换矩阵 一、概述 在点云配准中&#xff0c;SVD&#xff08;Singular Value Decomposition&#xff0c;奇异值分解&#xff09;方法是一种常用的精确计算旋转和平移变…

前端开发攻略---webSocket的简单实现与使用

1、演示 2、实现流程 安装依赖 npm i ws 服务端代码 const WebSocket require(ws)// 创建一个 WebSocket 服务器&#xff0c;监听端口 3000 const wss new WebSocket.Server({ port: 3000 })// 监听连接事件 wss.on(connection, function connection(ws) {console.log(客户端…

互联网医院系统,开发互联网医院设计哪些功能?

随着科技的进步和数字化转型的推动&#xff0c;互联网医院系统已成为现代医疗服务的重要组成部分。这一系统通过整合信息技术与医疗资源&#xff0c;为用户提供便捷、高效的医疗服务。以下是互联网医院系统的主要功能介绍。 1、在线咨询与诊断 互联网医院系统允许患者通过网络平…