一、建立測試表
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"
}
}');
"jobname":"oracle_tbs_space",
"1d"
"event":["used"],
"data":["used"],
"threshold":["90%"]
"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"+
}
#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
# select jobdesc->'values'#>>'{event,1}' as value2 from job where jobdesc->>'jobname' = 'linux_os_vmstat';
value2
cpu_w
2.更新記錄
#update job set jobdesc = '{
"threshold":[1,2]
}' 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
更新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", +
| "5m" +
| "event":["cpu_r","cpu_w"],+
| "data":["cpu_r"], +
| "threshold":[1,1] +
| "wintest1":"cpu" +
(2 行記錄)
#
# delete from job where jobdesc->>'jobname' = 'linux_os_vmstat';
DELETE 1
-------+-----------------------------------
3 | { +
| "jobname":"oracle_tbs_space",+
| "schedule":{ +
| "type":{"interval": +
| "1d" +
| }, +
| "start":"now", +
| "end":"None" +
| }, +
| "values":{ +
| "event":["used"], +
| "data":["used"], +
| "threshold":["90%"] +
| "objects":{ +
| "wintest1":"oradb1" +
| } +
本文轉自 pgmia 51CTO部落格,原文連結:http://blog.51cto.com/heyiyi/1344431