json 插入数据_Oracle Database 20c:JSON功能增强

0ced6ea840e731532528dad9b44c366e.png

JSON作为一种轻量化的数据传输格式,被广泛地应用在各种系统之间。Oracle Database在之前的版本当中就对JSON有了很好的支持,在Oracle Database20c当中,对JSON做出了更多的支持,比如native JSON数据类型,这将会使程序员操作Oracle数据库中的JSON数据变得更加容易。我们今天将通过实际操作的方式为您介绍如下4方面内容:

  • 存储JSON在数据库表中

  • 查询JSON数据

  • 创建索引以加速查询

  • 从关系表中生成JSON数据

除非程序需要,我们还是建议大家使用关系型数据库作为常规的数据存储。在Oracle Database 20c之前,我们建议大家使用VARCHAR2作为少于4000(或者32767,如果你开启了extended数据类型的话)字节的JSON数据存储,如果存储的数据较大,建议大家使用BLOB进行存储。为什么不使用CLOB呢?因为BLOB可以保持数据原有的样子,防止发生字符集转换。虽然这将带来一点点小麻烦,就是在使用BLOB存储JSON的时候,读取的时候是需要进行转换的,但也不用担心,我们有专门的方法来处理这种情况的数据。

0ced6ea840e731532528dad9b44c366e.png

1、创建JSON表

我们创建一个可以存储大JSON文本的数据表,叫做departments_json。

ff997f58a0a1f5a3b617d1fa843bcb81.png

为了确保我们在这个表中存储的数据是JSON格式的,而非其他格式,我们可以添加一个约束条件限定department_data字段的数据一定是JSON格式的。

d0f3b13d4e412c8ae47fc34bf1617b0f.png

2、向JSON表中插入数据

如果插入的是普通字符,直接用普通的insert语句插入即可,如果插入的BLOB类型的,那么要做文本到二进制的转换,我们刚才创建的departments_json的department_data就是BLOB类型的,所以稍后我们要进行转换。

a69b34d00fb6115954bc5410984073f8.png

因为刚刚我们在departments_json的department_data字段添加了约束条件,所以如果我们插入的数据是非JSON格式的,那么将会收到错误的信息。

1c9ff12e7de396ab59edf81f27722a6b.png

3、更新JSON数据

在19c之前,如果要更新JSON表中的数据,是一件比较头痛的事情,因为要替换整个字段值,比如就为了修改JSON数据当中的department值(下面红色线标识的部分),就要将整个字段都替换,比如下面这样写:

b7aee68a324155d73240bb36f9dd4986.png

从19c开始,我们可以使用JSON patching技术来简化我们的更新,主要使用的是json_mergepatch这个方法,如下所示:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值