SinoregalDSJson和Bson数据类型使用指南.docx
《SinoregalDSJson和Bson数据类型使用指南.docx》由会员分享,可在线阅读,更多相关《SinoregalDSJson和Bson数据类型使用指南.docx(8页珍藏版)》请在冰豆网上搜索。
SinoregalDSJson和Bson数据类型使用指南
星瑞格SinoregalDS
Json/Bson数据类型使用手册
Version1.0
福建星瑞格软件有限公司
版权及商标声明
本文件及其所有内容均系福建星瑞格软件有限公司版权所有,非经事前书面同意,不得任意转载、复制、改编或为其它任何方式之再利用。
Sinoregal®为福建星瑞格软件有限公司之商标。
本手册中提及之其它产品名称、服务名称、商标名称等之版权皆属各所属公司所有。
为力求本文件之所有内容的正确性,本公司保留对本文件及其所有内容进行修改而不预先通知的权利。
Copyright©2016福建星瑞格软件有限公司,版权所有。
前言
感谢您关注我们的SinoregalDS产品。
SinoregalDS是是基于IBMInformixv12源代码基础上研发建构的一款自主可控的国产通用关联数据库,广泛应用于政府、金融、电信运营商以及中、大型企业的核心系统。
本手册适合的对象
此手册使用对象为:
应用程序开发人员,它假定您已具备下列知识与经验:
⏹了解计算机、操作系统,以及操作系统指令等基础知识。
⏹有关系数据库的实务经验,或对数据库观念有一定程度的认识。
⏹具有SQL与Web应用程序开发经验或知识。
手册的组织
本手册分为四章:
第一章简要描述Json/Bson。
第二章介绍SinoregalDSJson/Bson数据类型。
第三章介绍如何使用Json/Bson数据类型。
第四章介绍如何使用SQL访问Json/Bson。
获得技术支持
福建星瑞格软件的技术支持部为SionregalDS提供产品技术支持。
用户可以通过如下方式获得技术支持:
E-mail:
support@
当与SinoregalDS的技术支持部门联系时,请提供以下数据:
●运行环境,例如:
操作系统和操作系统版本、硬件资源信息等。
●SinoregalDS产品的版本号
●问题的详细描述
本手册采用的惯例
在后续章节的说明中,以下列标记显示保留字、用户输入、系统信息、范例、画面组件和操作等。
标记
意义
粗体
环境变量、文件、路径名称、系统默认值,以及系统界面上的复选框(Checkbox)和选择钮(radiobutton)等都以粗体显示。
固定宽度字体
产品显示的消息与用户在指令模式下输入的信息以固定宽度字体显示。
斜体
以斜体字型显示数值范例。
请以用户环境/系统中定义或配置的正确值取代。
「」
系统界面上的群组框、表、字段等标题,皆标示在此符号内。
【】
系统界面上的功能选单、按钮、网页链结等,皆标示在此符号内。
->
功能点击的路径符号。
例如:
【工具】->【选项】,表示先点击【工具】,再点击【选项】。
『』
参阅章节。
目录
Chapter1简要概述Json/Bson1-1
1.1什么是Json/Bson1-1
Chapter2使用Json/Bson数据类型。
2-1
Chapter3使用SQL访问Json和Bson3-2
3.1Json/Bson数据导入导出3-2
3.2Json/Bson数据插入3-2
3.3Bson的内建函数3-3
3.3.1bson_get()3-3
3.3.2bson_size()3-3
3.3.3bson_update()3-1
3.3.4bson_value_int()3-1
3.3.5bson_value_lvarchar()3-1
3.3.6bson_value_objectid()3-2
3.4对bson类型创建索引3-2
3.5使用bson/Json关键词汇来查询3-2
3.6从关系型表中查询返回bson格式数据3-3
Chapter1简要概述Json/Bson
1.1什么是Json/Bson
JSON是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读。
尽管JSON是Javascript的一个子集,但JSON是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。
BSON,即二进制的方式存放JSON数据。
对象(object):
一个对象以“{”开始,并以“}”结束。
一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用“,”分区。
名称/值(collection):
名称和值之间使用“:
”隔开,一般的形式是:
{"name":
"Anne","age":
31}。
相对复杂的形式有:
{"Name":
"John",
"address":
{"city":
"NewYork","state":
"NY"},
"phoneNumbers":
["212555-1234","646555-4567"]}
Chapter2使用Json/Bson数据类型。
对于Json和Bson数据类型,行中直接存储小于4KB的文档,对于超过4KB的文档会被存储在该表指定的大对象存储空间或系统默认的大对象存储空间中。
下面将介绍,如何创建具有Json/Bson数据类型的表。
1)创建Json类型的表
createtabletab1(datajson);
2)创建Bson类型的表
Createtabletab2(databson);
3)创建多个Bson/Json字段类型的表
Createtabletab3(aint,bjson,cbson);
Chapter3使用SQL访问Json和Bson
3.1Json/Bson数据导入导出
1、假设d.unl文件内容格式如下:
{"name":
"informix","ver":
12}|
{"name":
"informix","ver":
11}|
2、将d.unl文件导入到tab1表中:
loadfrom'd.unl'insertintotab2;
3、Json/Bson数据的导出:
Unloadtod.unlselect*fromtab2;
3.2Json/Bson数据插入
1)简单例子
insertintotab2values('{"name":
"informix","ver":
11}');
2)将Json格式数据插入到Bson类型中
createtabletab3(databson);
insertintotab3values('{"name":
"informix","ver":
11}':
:
json:
:
bson);
insertintotab3selectdata:
:
bsonfromtab2;
3)SinoregalDS对于Json/Bson的校验
insertintotab2values('{"name":
"informix","ver":
11}}':
:
json);
(U0001)-JSONSyntaxerroratcharacter29
Errorinline1
Nearcharacterposition63
insertintotab2values('{"name":
"informix","ver":
{}':
:
json);
(U0001)-JSONSyntaxerroratcharacter29
Errorinline1
Nearcharacterposition61
insertintotab2values('{error:
{"name":
"informix","ver":
11}':
:
json);
(U0001)-JSONSyntaxerroratcharacter37
Errorinline1
Nearcharacterposition69
3.3Bson的内建函数
3.3.1bson_get()
1)从Bson类型中获取键-值数据
selectbson_get(data,"name"):
:
jsonfromtab3;
(expression){"name":
"informix"}
2)从Bson类型中获取键-值数据并替换键名称
selectbson_get(data,"name","title"):
:
jsonfromtab3;
(expression){"title":
"informix"}
3.3.2bson_size()
selectbson_size(data,""),bson_size(data,"name")fromtab3;
(expression)(expression)
4113
3.3.3bson_update()
可使用Mongodb更新操作指令来更新Bson字段中的内容:
$set,$unset,$inc
如一个Json原值如下:
{"name":
"informix","ver":
12,"state":
true}
1、$set用法
updatetab3setdata=bson_update(data,'{"$set":
{"ver":
11}}');
{"name":
"informix","ver":
11,"state":
true}
2、$inc用法:
updatetab3setdata=bson_update(data,'{"$inc":
{"ver":
1}}');
{"name":
"informix","ver":
12,"state":
true}
3.3.4bson_value_int()
用来返回bson字段中numeric值
如:
selectbson_value_int(data,"ver")fromtab3;
(expression)
11
12
selectbson_value_int(data,"ver")fromtab3wherebson_value_int(data,"ver")<12;
(expression)
11
类似的函数有:
BSON_VALUE_BIGINT(),BSON_VALUE_DOUBLE(),BSON_VALUE_FLOAT()
3.3.5bson_value_lvarchar()
将bson字段类型的值转换成字符型返回。
用在低于32740字节bson数据。
selectdata:
:
jsonfromtab3wherebson_value_lvarchar(data,“name")=“informix";
(expression){"name":
"informix","ver":
12}
(expression){"name":
"informix","ver":
11}
类似的有:
BSON_VALUE_VARCHAR()
3.3.6bson_value_objectid()
用来查询bson文档的对象ID值(Objectid),查询结果以字符串形式返回。
SELECTBSON_VALUE_OBJECTID(data,"_id")FROMproducts;
(expression)54befb9eedbc233cd3a4b2fb
3.4对bson类型创建索引
对Bson/json类型创建索引可以只用两种方式:
1)使用bsog_get()函数和usingbson关键词
如:
createindexidxontab3(bson_get(data,"name"))usingbson;
createindexidx1ontab3(bson_get(data,"name"),bson_get(data,"ver"))usingbson;
2)使用Bson的扩展函数和usingbson关键词
createindexidxontab3(bson_value_lvarchar(data,"name"))usingbson;
createindexidx1ontab3(bson_value_lvarchar(data,"name"),bson_value_int(data,"ver"))usingbson;
3.5使用bson/Json关键词汇来查询
1、全表查询
selectdata:
:
jsonfromtab3;
2、带有查询条件
selectdata:
:
jsonfromtab3wherebson_get(data,"ver")='{"ver":
11}':
:
json;
(expression){"name":
"informix","ver":
11}
3、获取嵌套模式Json类型的keyvalue
如:
{"person":
{"givenname":
"Jim","surname":
"Flynn","age":
29,"cars":
["dodge",“mini"]}}
selectdata.person.surname:
:
jsonfromtab3;
(expression){"surname":
"Flynn"}
selectdata.person.cars:
:
jsonfromtab3;
(expression){"cars":
["dodge",“mini"]}
3.6从关系型表中查询返回bson格式数据
如:
SELECTFIRST1genbson(systables):
:
JSONFROMsystables;
SELECTFIRST1genbson(ROW(tabname,tabid)):
:
JSONFROMsystables;
{"_id":
ObjectId("5319414764d5b83f00000005"),"tabname":
"systables","tabid":
1}