加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Postgresql 9.3.2 Json类型使用

发布时间:2020-12-13 17:32:59 所属栏目:百科 来源:网络整理
导读:一、创建测试表 CREATE TABLE job ( jobid SERIAL primary key, jobdesc json ) 二、选择符 -(返回对象类型) -(返回字符型) #(选择数组类型) 三、插入选择更新删除操作记录 1.插入记录 insert into job(jobdesc) values('{ "jobname":"linux_os_vmstat", "sc

一、创建测试表


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"

},

"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",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" +

| },+

| "values":{ +

| "event":["cpu_r",+

| "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" +

| },+

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

| },+

| "objects":{ +

| "wintest1":"oradb1" +

| } +

| }

(1 行记录)

#

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读