找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

1890

积分

0

好友

237

主题
发表于 2025-12-30 04:24:40 | 查看: 27| 回复: 0

概述

INSERT INTO 操作支持将 Doris 的查询结果直接导入到另一张表中。这是一种同步导入方式,执行后直接返回导入结果,便于用户即时判断任务成功与否。其核心优势在于保证了导入任务的原子性,确保数据要么全部成功写入,要么完全回滚,避免产生中间状态。这对于需要强一致性的数据处理场景至关重要。

语法

INSERT INTO 语句主要支持以下两种写入方式:

  1. 通过 SELECT 查询插入:将查询结果集写入目标表。
  2. 通过 VALUES 列表插入:直接指定要插入的数值。

对应的基础语法如下:

INSERT INTO tbl SELECT ...
INSERT INTO tbl (col1, col2, ...) VALUES (1, 2, ...), (1,3, ...)

操作示例

1. 创建目标表

首先,我们创建一个名为 insto 的测试表,用于接收后续插入的数据。

CREATE TABLE IF NOT EXISTS insto
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `age` SMALLINT COMMENT "用户年龄"
)
UNIQUE KEY(`user_id`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"enable_unique_key_merge_on_write" = "true"
);

2. 使用 VALUES 插入单条数据

使用最基础的 VALUES 语法插入一条测试记录。

insert into insto values(1,10)

这种方式语法简单直接,常用于快速插入少量测试数据,但在生产环境处理海量数据时效率较低,并非最佳选择。

3. 通过 SELECT 查询进行批量插入

这是更符合生产实践的用法,通常涉及从另一张表或复杂查询中筛选数据并导入。

第一步:创建数据源表
我们创建一张包含更多字段的源表 jsontest

CREATE TABLE IF NOT EXISTS jsontest
(
    `user_id` LARGEINT NOT NULL COMMENT "用户id",
    `age` SMALLINT COMMENT "用户年龄",
    `address` VARCHAR(500) COMMENT "用户地址",
    `register_time` DATE COMMENT "用户注册时间"
)
UNIQUE KEY(`user_id`)
DISTRIBUTED BY HASH(`user_id`) BUCKETS 1
PROPERTIES (
"replication_allocation" = "tag.location.default: 1",
"enable_unique_key_merge_on_write" = "true"
);

假设 jsontest 表中已有如下数据:
用户信息表示例
图1:jsontest 表中的示例用户数据

第二步:清理目标表数据
为确保演示清晰,我们先清空之前插入的测试数据。

delete from insto where user_id=1

第三步:执行 INSERT INTO ... SELECT
现在,我们从 jsontest 表中选取 user_idage 字段,批量插入到 insto 表中。这正是处理 大数据 同步和ETL任务的典型场景。

insert into insto select user_id,age from jsontest

第四步:验证插入结果
执行成功后,查询 insto 表,可以看到数据已准确同步。
INSERT INTO SELECT 操作结果
图2:通过SELECT查询验证插入结果

希望这篇关于Doris核心导入操作的详解能对你有所帮助。想了解更多数据处理与 数据库 技术,欢迎访问 云栈社区 进行深度交流与探索。




上一篇:实战指南:基于BPF深度解析Linux内核CPU、内存与网络性能瓶颈
下一篇:Regata OS 开源发行版评测:专为游戏与创意设计的Linux系统,搭载KDE Plasma 6
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-11 10:03 , Processed in 0.213486 second(s), 40 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2025 云栈社区.

快速回复 返回顶部 返回列表