当前位置: 首页 > article >正文

doris:STRUCT

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.kler.cn/a/522911.html

相关文章:

  • Linux 4.19内核中的内存管理:x86_64架构下的实现与源码解析
  • 【Elasticsearch 】悬挂索引(Dangling Indices)
  • SQL教程-基础语法
  • 挂载mount
  • MV结构下设置Qt表格的代理
  • LangGraph系列-1:用LangGraph构建简单聊天机器人
  • 【阅读笔记】New Edge Diected Interpolation,NEDI算法,待续
  • 跨域问题解释及前后端解决方案(SpringBoot)
  • 接口技术-第2次作业
  • Gradle配置指南:深入解析settings.gradle.kts(Kotlin DSL版)
  • AAAI2024论文合集解读|Multi-dimensional Fair Federated Learning-water-merged
  • IBMSamllPower服务器监控指标解读
  • 【数据库初阶】表的查询语句和聚合函数
  • leetcode 2920. 收集所有金币可获得的最大积分
  • 10 款《医学数据库和期刊》查阅网站
  • Lesson 119 A true story
  • 蓝桥杯模拟算法:多项式输出
  • 【Prometheus】Prometheus如何监控Haproxy
  • 菜鸟之路Day09一一集合进阶(二)
  • 【公因数匹配——暴力、(质)因数分解、哈希】
  • Github 2025-01-27 开源项目周报 Top15
  • 第 4 章:游戏逻辑与状态管理
  • 【微服务与分布式实践】探索 Sentinel
  • 使用 postman 测试思源笔记接口
  • Excel中LOOKUP函数的使用
  • 重回C语言之老兵重装上阵(十五)C语言错误处理