开发者社区> 科技小能手> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Postgresql 9.3.2 Json类型使用

简介:
+关注继续查看

一、创建测试表


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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
postman测试post请求参数为json类型
postman测试post请求参数为json类型
0 0
fastadmin设置默认返回json类型
fastadmin设置默认返回json类型
0 0
开发指南—数据类型—Json类型
PolarDB-X支持JSON类型。 与MySQL不同,PolarDB-X支持的JSON类型暂不支持作为分区键。 详细信息请参见MySQL Json类型。
0 0
SpringMVC五种类型参数传递和json数据传递参数
SpringMVC五种类型参数传递和json数据传递参数
0 0
[SpringMVC]请求与响应③(JSON数据传输参数、日期类型参数传递)
请求与响应③(JSON数据传输参数、日期类型参数传递)
0 0
MySQL Json类型的一个坑
MySQL中JSON类型有个隐藏的坑,底层会对json结构重排序后保存,目的是为了优化搜索效率;但是针对结构不能改变的业务来说,就是一个大坑
0 0
【MySQL】 json类型的增删改查
【MySQL】 json类型的增删改查
0 0
Newtonsoft.Json C#Json序列化和反序列化工具的使用、类型方法大全
Newtonsoft.Json C#Json序列化和反序列化工具的使用、类型方法大全
0 0
【mysql】JSON 类型
【mysql】JSON 类型
0 0
Python字符串和json类型的相互转换实例演示,python字符串转json、json转字符串
Python字符串和json类型的相互转换实例演示,python字符串转json、json转字符串
0 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
PolarDB for PostgreSQL三节点功能介绍
立即下载
为什么PostgreSQL是最适合去O的数据库
立即下载
Oracle 至PostgreSQL案例分享
立即下载