1.Doris 是否支持修改列名?
在 1.2.0 版本之后, 开启 "light_schema_change"="true"
选项时,可以支持修改列名。
在 1.2.0 版本之前或未开启 "light_schema_change"="true"
选项时,不支持修改列名, 原因如下:
Doris支持修改数据库名、表名、分区名、物化视图(Rollup)名称,以及列的类型、注释、默认值等等。但遗憾的是,目前不支持修改列名。
因为一些历史原因,目前列名称是直接写入到数据文件中的。Doris在查询时,也是通过列名查找到对应的列的。所以修改列名不仅是简单的元数据修改,还会涉及到数据的重写,是一个非常重的操作。
2.如何添加light_schema_change参数呢?
在新建表的时候指定:"light_schema_change" = "true",注:
对历史表不起作用
建表语句示例:
CREATE TABLE `fc_0818_57` (
`tong_id` bigint(20) NOT NULL COMMENT '主键',
`tong_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '插入时间',
`op` varchar(30) NOT NULL COMMENT '操作类型',
`map_varchar_test` varchar(255) NULL COMMENT '企业主键',
`map_char_test` varchar(255) NULL COMMENT '目录编码'
) ENGINE=OLAP
UNIQUE KEY(`tong_id`)
COMMENT 'ws测试数据'
DISTRIBUTED BY HASH(`tong_id`) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 3",
"in_memory" = "false",
"storage_format" = "V2",
"light_schema_change" = "true",
"disable_auto_compaction" = "false"
);
建表成功后,即可对列名进行修改,语法:
alter table table_name RENAME COLUMN old_column_name new_column_name;