doris:STRUCT

ops/2025/2/5 21:17:49/

STRUCT<field_name:field_type [COMMENT 'comment_string'], ... > 表示由多个 Field 组成的结构体,也可被理解为多个列的集合。

  • 不能作为 Key 使用,目前 STRUCT 仅支持在 Duplicate 模型的表中使用。
  • 一个 Struct 中的 Field 的名字和数量固定,总是为 Nullable,一个 Field 通常由下面部分组成。
    • field_name: Field 的标识符,不可重复
    • field_type: Field 的类型
    • COMMENT: Field 的注释,可选 (暂不支持)

当前可支持的类型有:

BOOLEAN, TINYINT, SMALLINT, INT, BIGINT, LARGEINT, FLOAT, DOUBLE, DECIMAL, DECIMALV3,
DATE, DATEV2, DATETIME, DATETIMEV2, CHAR, VARCHAR, STRING

CSV格式导入​

第 1 步:准备数据​

创建如下的 csv 文件:test_struct.csv 其中分隔符使用 | 而不是逗号,以便和 struct 中的逗号区分。

1|{10, 3.14, "Emily"}
2|{4, 1.5, null}
3|{7, null, "Benjamin"}
4|{}
5|null

第 2 步:在数据库中建表​

CREATE TABLE struct_test (id          INT                                  NOT NULL,c_struct    STRUCT<f1:INT,f2:FLOAT,f3:STRING>    NULL
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES ("replication_allocation" = "tag.location.default: 1"
);

第 3 步:导入数据​

curl --location-trusted \-u "root":"" \-H "column_separator:|" \-H "columns: id, c_struct" \-T "test_struct.csv" \http://localhost:8040/api/testdb/struct_test/_stream_load

第 4 步:检查导入数据​

mysql> SELECT * FROM struct_test;
+------+--------------------------------------+
| id   | c_struct                             |
+------+--------------------------------------+
|    1 | {"f1":10, "f2":3.14, "f3":"Emily"}   |
|    2 | {"f1":4, "f2":1.5, "f3":null}        |
|    3 | {"f1":7, "f2":null, "f3":"Benjamin"} |
|    4 | {"f1":null, "f2":null, "f3":null}    |
|    5 | NULL                                 |
+------+--------------------------------------+
5 rows in set (0.01 sec)

JSON格式导入​

第 1 步:准备数据​

创建如下的 JSON 文件,test_struct.json

[{"id":1, "c_struct":{"f1":10, "f2":3.14, "f3":"Emily"}},{"id":2, "c_struct":{"f1":4, "f2":1.5, "f3":null}},{"id":3, "c_struct":{"f1":7, "f2":null, "f3":"Benjamin"}},{"id":4, "c_struct":{}},{"id":5, "c_struct":null}
]

第 2 步:在数据库中建表​

CREATE TABLE struct_test (id          INT                                  NOT NULL,c_struct    STRUCT<f1:INT,f2:FLOAT,f3:STRING>    NULL
)
DUPLICATE KEY(id)
DISTRIBUTED BY HASH(id) BUCKETS 1
PROPERTIES ("replication_allocation" = "tag.location.default: 1"
);

第 3 步:导入数据​

curl --location-trusted \-u "root":"" \-H "format:json" \-H "columns: id, c_struct" \-H "strip_outer_array:true" \-T "test_struct.json" \http://localhost:8040/api/testdb/struct_test/_stream_load

第 4 步:检查导入数据​

mysql> SELECT * FROM struct_test;
+------+--------------------------------------+
| id   | c_struct                             |
+------+--------------------------------------+
|    1 | {"f1":10, "f2":3.14, "f3":"Emily"}   |
|    2 | {"f1":4, "f2":1.5, "f3":null}        |
|    3 | {"f1":7, "f2":null, "f3":"Benjamin"} |
|    4 | {"f1":null, "f2":null, "f3":null}    |
|    5 | NULL                                 |
+------+--------------------------------------+
5 rows in set (0.00 sec)

http://www.ppmy.cn/ops/155974.html

相关文章

PDF 擦除工具

该软件仅仅适用于非人民币玩家&#xff0c;如果有wps会员等类似的软件的没有大用处 PDF Eraser允许用户擦除PDF文件中任何元素&#xff0c;并且支持添加文本和图像。除此之外PDF Eraser允许用户删除不必要的PDF页面&#xff0c;为了兼顾一些大型的扫描的PDF文档&#xff0c;PDF…

ubuntu 网络管理--wpa_supplicant、udhcpc

ubuntu 网络管理--wpa_supplicant 1 介绍wpa_supplicant 无线认证wpa_passphrase 配置工具 NetworkManager 网络管理udhcpc 与 dhclient对比dhclient概述主要功能 udhcpc概述主要功能 2 联系依赖关系配置文件 3 区别4 如何选择5 示例使用 wpa_supplicant 手动连接无线网络使用 …

MVC 文件夹:架构之美与实际应用

MVC 文件夹:架构之美与实际应用 引言 MVC(Model-View-Controller)是一种设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种架构模式不仅提高了代码的可维护性和可扩展性,而且使得开发流程更加清晰。本文将深入探讨MVC文…

HTTPS域名443端口证书到期问题排查与解决

在现代Web开发中&#xff0c;HTTPS协议广泛用于确保客户端和服务器之间的通信安全。然而&#xff0c;HTTPS依赖于SSL/TLS证书来加密通信并验证网站的身份。当证书过期时&#xff0c;客户端可能会遇到连接错误。本文将介绍如何排查和解决因证书过期引起的问题&#xff0c;尤其是…

CSS工程化概述

CSS的问题 类名冲突的问题 当你写一个 css 类的时候&#xff0c;你是写全局的类呢&#xff0c;还是写多个层级选择后的类呢&#xff1f; 你会发现&#xff0c;怎么都不好 过深的层级不利于编写、阅读、压缩、复用。过浅的层级容易导致类名冲突。 一旦样式多起来&#xff0…

【Linux】解决 apt-key 弃用问题:GPG 直接管理密钥代替 apt-key

引言 在 Linux 系统&#xff0c;尤其是 Debian 和 Ubuntu 中&#xff0c;APT&#xff08;Advanced Package Tool&#xff09;是广泛使用的包管理工具&#xff0c;负责安装、更新和管理系统软件包。历史上&#xff0c;apt-key 命令一直被用来管理 GPG 密钥&#xff0c;验证软件…

5.3.1 软件设计的基本任务

文章目录 软件设计解决的问题概要设计基本任务详细设计基本任务 软件设计解决的问题 需求分析解决“做什么”的问题&#xff0c;软件设计解决“如何做”的问题。软件设计分为概要设计、详细设计两块。概要设计是设计软件和数据的总体框架&#xff0c;比详细设计的颗粒度更大。详…

Linux进阶——时间服务器

NTP是网络时间协议&#xff08;network time protocol&#xff09;的简称&#xff08;应用层的协议&#xff09;&#xff0c;通过UDP123端口进行网络时钟同步。 Chrony是一个开源自由的网络时间协议NTP的客户端和服务器软件。它能让计算机保持系统时钟与时钟服务器&#xff08…