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

doris:JSON

JSON 数据类型,用二进制格式高效存储 JSON 数据,通过 JSON 函数访问其内部字段。

默认支持 1048576 字节(1 MB),可调大到 2147483643 字节(2 GB),可通过 BE 配置string_type_length_soft_limit_bytes 调整。

与普通 String 类型存储的 JSON 字符串相比,JSON 类型有两点优势

  1. 数据写入时进行 JSON 格式校验
  2. 二进制存储格式更加高效,通过json_extract等函数可以高效访问JSON内部字段,比get_json_xx函数快几倍

注意

在1.2.x版本中,JSON 类型的名字是 JSONB,为了尽量跟 MySQL 兼容,从 2.0.0 版本开始改名为 JSON,老的表仍然可以使用。

CSV格式导入​

第 1 步:准备数据​

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

1|{"name": "tom", "age": 35}
2|{"name": null, "age": 28}
3|{"name": "micheal", "age": null}
4|{"name": null, "age": null}
5|null

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

CREATE TABLE json_test (
    id          INT     NOT NULL,
    c_json      JSON    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_json" \
        -T "test_json.csv" \
        http://localhost:8040/api/testdb/json_test/_stream_load

第 4 步:检查导入数据​

SELECT * FROM json_test;
+------+-------------------------------+
| id   | c_json                        |
+------+-------------------------------+
|    1 | {"name":"tom","age":35}       |
|    2 | {"name":null,"age":28}        |
|    3 | {"name":"micheal","age":null} |
|    4 | {"name":null,"age":null}      |
|    5 | null                          |
+------+-------------------------------+
5 rows in set (0.01 sec)

JSON格式导入​

第 1 步:准备数据​

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

[
    {"id": 1, "c_json": {"name": "tom", "age": 35}},
    {"id": 2, "c_json": {"name": null, "age": 28}},
    {"id": 3, "c_json": {"name": "micheal", "age": null}},
    {"id": 4, "c_json": {"name": null, "age": null}},
    {"id": 5, "c_json": null}
]

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

CREATE TABLE json_test (
    id          INT     NOT NULL,
    c_json      JSON    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_json" \
        -H "strip_outer_array:true" \
        -T "test_json.json" \
        http://localhost:8040/api/testdb/json_test/_stream_load

第 4 步:检查导入数据​

mysql> SELECT * FROM json_test;
+------+-------------------------------+
| id   | c_json                        |
+------+-------------------------------+
|    1 | {"name":"tom","age":35}       |
|    2 | {"name":null,"age":28}        |
|    3 | {"name":"micheal","age":null} |
|    4 | {"name":null,"age":null}      |
|    5 | NULL                          |
+------+-------------------------------+
5 rows in set (0.01 sec)


http://www.kler.cn/a/524123.html

相关文章:

  • 推动知识共享的在线知识库实施与优化指南
  • Spring MVC 综合案例
  • 算法基础学习——二分查找(附带Java模板)
  • CAPL编程常见问题与解决方案深度解析
  • C#高级:常用的扩展方法大全
  • Airflow:精通Airflow任务依赖
  • LLM架构与优化:从理论到实践的关键技术
  • [MySQL]事务的理论、属性与常见操作
  • Web实训项目-ToDoSystem项目
  • 区块链在能源行业的应用场景
  • 基于FPGA的BT656解码
  • Elasticsearch+kibana安装(简单易上手)
  • 几种K8s运维管理平台对比说明
  • SQL注入漏洞之 提交方式类型注入 Get分类 Post分类 Cookie分类 请求数据位置分类 请求行 请求头 请求数据分类 靶场练习
  • 【Leetcode刷题记录】45. 跳跃游戏 II--贪心算法
  • 【算法】经典博弈论问题——斐波那契博弈 + Zeckendorf 定理 python
  • 中文输入法方案
  • CH32V303RCT6使用RTOS的选择对比
  • 深入理解 C 语言函数指针的高级用法:(void (*) (void *)) _IO_funlockfile
  • 对游戏宣发的粗浅思考
  • LabVIEW开发故障诊断
  • 虚幻基础06:cast to
  • 讲解QoS队列调度算法
  • 【算法应用】基于A*-蚁群算法求解无人机城市多任务点配送路径问题
  • 用HTML、CSS和JavaScript实现庆祝2025蛇年大吉(附源码)
  • A星算法两元障碍物矩阵转化为rrt算法四元障碍物矩阵