Doris更新某一列完整教程

通过临时表来更新
例如有下面的表结构

ods_t_iot (
pid varchar(255) NOT NULL,
ptime bigint NOT NULL,
pvalue decimal(38,9) NOT NULL,
ds varchar(30) NULL
) ENGINE=OLAP
UNIQUE KEY(pid, ptime, pvalue, ds)
需要把ds这一列更新为2025-02-07

  1. 创建一个新表并导入数据
    由于不能直接使用 UPDATE,一种常见的方法是创建一个新表,然后通过批量插入的方式将数据导入,并修改 ds 列的值。下面是详细步骤:

步骤 1: 创建一个新表
首先,我们需要创建一个新的表,结构与原表一致,唯一的区别是我们会把 ds 列的默认值设置为 ‘2025-02-07’,并确保与原表的列顺序、类型保持一致。

CREATE TABLE ods_t_iot_new like ods_t_iot;
步骤 2: 使用 INSERT INTO SELECT 语句从原表导入数据
接下来,我们将原表的数据导入到新表中,同时确保 ds 列的值设置为 ‘2025-02-07’。可以使用以下 SQL:

INSERT INTO ods_t_iot_new (pid, ptime, pvalue, ds) SELECT pid, ptime, pvalue, IFNULL(ds, ‘2025-02-07’) AS ds FROM ods_t_iot;
在这里,IFNULL(ds, ‘2025-02-07’) 会将原表中 ds 列为 NULL 的数据替换为 ‘2025-02-07’。

步骤 3: 删除原表并重命名新表
导入数据完成后,我们可以删除原表并将新表重命名为原表名。这样,所有数据都已经更新,ds 列也被设置为 ‘2025-02-07’。

DROP TABLE ods_t_iot;

ALTER TABLE ods_t_iot_new RENAME ods_t_iot;

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627

发表评论

邮箱地址不会被公开。 必填项已用*标注