Postgresql 9.3.2 Json类型使用

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介:

一、创建测试表


CREATE TABLE job

(

 jobid SERIAL primary key ,

 jobdesc json

)


二、选择符


->(返回对象类型)

->>(返回字符型)

#>>(选择数组类型)


三、插入选择更新删除操作记录


1.插入记录


insert into job(jobdesc) values('{  

   "jobname":"linux_os_vmstat",

   "schedule":{

       "type":{"interval":

          "5m"

       },

       "start":"now",

       "end":"None"

   },

   "values":{

       "event":["cpu_r","cpu_w"],

       "data":["cpu_r"],

       "threshold":[1,1]

   },

   "objects":{

       "wintest1":"cpu"

   }

}');


insert into job(jobdesc) values('{  

   "jobname":"oracle_tbs_space",

   "schedule":{

       "type":{"interval":

          "1d"

       },

       "start":"now",

       "end":"None"

   },

   "values":{

       "event":["used"],

       "data":["used"],

       "threshold":["90%"]

   },

   "objects":{

       "wintest1":"oradb1"

   }

}');


2.选择记录


# select jobdesc->>'jobname' as jobname from job where jobdesc->'objects'->>'wintest1' like 'oradb1';

    jobname

------------------

oracle_tbs_space

(1 行记录)


# select jobdesc->'objects' as objects from job where jobdesc->>'jobname' = 'linux_os_vmstat';

        objects

--------------------------

{                       +

        "wintest1":"cpu"+

    }

(1 行记录)


#select jobdesc->'values'#>>'{threshold,0}' from job where jobdesc->>'jobname' = 'oracle_tbs_space';


数组元素选择


# select jobdesc->'values'#>>'{event,0}' as value1 from job where jobdesc->>'jobname' = 'linux_os_vmstat';

value1

--------

cpu_r

(1 行记录)


# select jobdesc->'values'#>>'{event,1}' as value2 from job where jobdesc->>'jobname' = 'linux_os_vmstat';

value2

--------

cpu_w

(1 行记录)



2.更新记录


#update job  set jobdesc = '{  

   "jobname":"linux_os_vmstat",

   "schedule":{

       "type":{"interval":

          "5m"

       },

       "start":"now",

       "end":"None"

   },

   "values":{

       "event":["cpu_r","cpu_w"],

       "data":["cpu_r"],

       "threshold":[1,2]

   },

   "objects":{

       "wintest1":"cpu"

   }

}' where jobdesc->>'jobname' = 'linux_os_vmstat';

UPDATE 1

# select jobdesc->'values'#>>'{threshold,1}' as threshold2 from job

where jobdesc->>'jobname' = 'linux_os_vmstat';

threshold2

------------

2

(1 行记录)


更新json类型字段时必须整个字段都更新,无法采用指定内部特定值方法更新。


3.删除记录


# select * from job;

jobid |              jobdesc

-------+------------------------------------

    3 | {                                 +

      |     "jobname":"oracle_tbs_space", +

      |     "schedule":{                  +

      |         "type":{"interval":       +

      |            "1d"                   +

      |         },                        +

      |         "start":"now",            +

      |         "end":"None"              +

      |     },                            +

      |     "values":{                    +

      |         "event":["used"],         +

      |         "data":["used"],          +

      |         "threshold":["90%"]       +

      |     },                            +

      |     "objects":{                   +

      |         "wintest1":"oradb1"       +

      |     }                             +

      | }

    4 | {                                 +

      |     "jobname":"linux_os_vmstat",  +

      |     "schedule":{                  +

      |         "type":{"interval":       +

      |            "5m"                   +

      |         },                        +

      |         "start":"now",            +

      |         "end":"None"              +

      |     },                            +

      |     "values":{                    +

      |         "event":["cpu_r","cpu_w"],+

      |         "data":["cpu_r"],         +

      |         "threshold":[1,1]         +

      |     },                            +

      |     "objects":{                   +

      |         "wintest1":"cpu"          +

      |     }                             +

      | }

(2 行记录)

#

# delete from job where jobdesc->>'jobname' = 'linux_os_vmstat';

DELETE 1

# select * from job;

jobid |              jobdesc

-------+-----------------------------------

    3 | {                                +

      |     "jobname":"oracle_tbs_space",+

      |     "schedule":{                 +

      |         "type":{"interval":      +

      |            "1d"                  +

      |         },                       +

      |         "start":"now",           +

      |         "end":"None"             +

      |     },                           +

      |     "values":{                   +

      |         "event":["used"],        +

      |         "data":["used"],         +

      |         "threshold":["90%"]      +

      |     },                           +

      |     "objects":{                  +

      |         "wintest1":"oradb1"      +

      |     }                            +

      | }

(1 行记录)

#



本文转自 pgmia 51CTO博客,原文链接:http://blog.51cto.com/heyiyi/1344431
相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
Web App开发 前端开发
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
Chrome 浏览器插件 V3 版本 Manifest.json 文件中 Action 的类型(Types)、方法(Methods)和事件(Events)的属性和参数解析
367 0
|
SQL 关系型数据库 数据库
实时计算 Flink版操作报错之使用SQL 将 PostgreSQL 的 date 类型字段转换为 TIMESTAMP 类型时遇到报错,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
10月前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
222 4
|
11月前
|
XML JSON 数据可视化
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
本文详细介绍了不同数据集格式之间的转换方法,包括YOLO、VOC、COCO、JSON、TXT和PNG等格式,以及如何可视化验证数据集。
2364 1
数据集学习笔记(二): 转换不同类型的数据集用于模型训练(XML、VOC、YOLO、COCO、JSON、PNG)
|
JSON 人工智能 编译器
Go json 能否解码到一个 interface 类型的值
Go json 能否解码到一个 interface 类型的值
79 1
|
JSON 关系型数据库 数据库
PostgreSQL中json_to_record函数的神秘面纱
`json_to_record`是PostgreSQL中的函数,用于将JSON数据转换为RECORD类型,便于查询和分析。基本用法是传入JSON数据,如`SELECT json_to_record('{"name": "张三", "age": 30}'::json);`。还可结合FUNCTION创建自定义函数,实现复杂功能。在实际应用中,它简化了对JSON格式数据的处理,例如筛选年龄大于30的用户。了解并善用此函数能提升数据库操作效率。本文由木头左分享,期待你的点赞和收藏,下次见!
PostgreSQL中json_to_record函数的神秘面纱
|
JSON 关系型数据库 MySQL
实时计算 Flink版产品使用问题之在使用CDAS语法同步MySQL数据到Hologres时,如果开启了字段类型宽容模式,MySQL中的JSON类型会被转换为什么
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
存储 JSON 关系型数据库
MySQL JSON 类型:功能与应用
MySQL JSON 类型:功能与应用
|
存储 JSON DataWorks
DataWorks产品使用合集之DataWorks将 MongoDB 中的数组类型写入到 DataWorks 的单个字段时,表示为字符串格式而非 JSON 格式如何解决
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
150 3
|
存储 JSON 关系型数据库
PostgreSQL Json应用场景介绍和Shared Detoast优化
PostgreSQL Json应用场景介绍和Shared Detoast优化

推荐镜像

更多