用Tokyo Cabinet实现与数据库一样的数据库功能,下面以2010年世界杯球员信息进行演示
表格内容如下
id name country classid createtime
1 莫斯 新西兰 1000003800 2010-05-18 09:21:00
2 列拉 新西兰 1000003800 2010-05-18 09:18:04
3 克劳奇 新西兰 1000003800 2010-05-18 09:18:07
4 德泽乌 新西兰 1000003800 2010-05-18 09:18:22
5 温特拉 新西兰 1000003800 2010-05-18 09:18:34
tctmgr命令参数
tctmgr create [-tl] [-td|-tb|-tt|-tx] path [bnum [apow [fpow]]]
tctmgr inform [-nl|-nb] path
tctmgr put [-nl|-nb] [-sx] [-dk|-dc|-dai|-dad] path pkey [cols...]
tctmgr out [-nl|-nb] [-sx] path pkey
tctmgr get [-nl|-nb] [-sx] [-px] [-pz] path pkey
tctmgr list [-nl|-nb] [-m num] [-pv] [-px] [-fm str] path
tctmgr search [-nl|-nb] [-ord name type] [-m num] [-sk num] [-kw] [-pv] [-px] [-ph] [-bt num] [-rm] [-ms type] path [name op expr ...]
tctmgr optimize [-tl] [-td|-tb|-tt|-tx] [-tz] [-nl|-nb] [-df] path [bnum [apow [fpow]]]
tctmgr setindex [-nl|-nb] [-it type] path name
tctmgr importtsv [-nl|-nb] [-sc] path [file]
tctmgr version
创建数据库
tctmgr create players
插入数据
tctmgr put players 1 "name" "莫斯" "country" "新西兰" "classid" 1000003800 "createtime" "2010-05-18 09:21:00"
tctmgr put players 2 "name" "列拉" "country" "西班牙" "classid" 1000003800 "createtime" "2010-05-18 09:18:04"
tctmgr put players 3 "name" "克劳奇" "country" "英格兰" "classid" 1000003800 "createtime" "2010-05-18 09:18:07"
tctmgr put players 4 "name" "德泽乌" "country" "荷兰" "classid" 1000003800 "createtime" "2010-05-18 09:18:22"
tctmgr put players 5 "name" "温特拉" "country" "希腊" "classid" 1000003800 "createtime" "2010-05-18 09:18:34"
查看数据
tctmgr list -pv players
结果如下:
1 name 莫斯 country 新西兰 classid 1000003800 createtime 2010-05-18 09:21:00
2 name 列拉 country 西班牙 classid 1000003800 createtime 2010-05-18 09:18:04
4 name 德泽乌 country 荷兰 classid 1000003800 createtime 2010-05-18 09:18:22
3 name 克劳奇 country 英格兰 classid 1000003800 createtime 2010-05-18 09:18:07
5 name 温特拉 country 希腊 classid 1000003800 createtime 2010-05-18 09:18:34
按条件查询数据
通过主键进行查询,查询球员id为3的信息
tctmgr get players 3
结果如下:
name 克劳奇
country 英格兰
classid 1000003800
createtime 2010-05-18 09:18:07
通过非主键查询
#查询克劳奇球员 相当于标准sql中的where 字段='字符串'
tctmgr search -pv players name STREQ "克劳奇"
结果如下:
3 name 克劳奇 country 英格兰 classid 1000003800 createtime 2010-05-18 09:18:07
#查询以温开头的球员 相当于标准sql中的相当于标准sql中like '字符串%;
tctmgr search -pv players name STRBW "温"
5 name 温特拉 country 希腊 classid 1000003800 createtime 2010-05-18 09:18:34
附查询条件表达式(前面加~,相当于标准sql中的非)
* STREQ : 完全包含字符串,相当于标准sql中的where 字段='字符串'
* STRINC : 包含此字符串,相当于标准sql中like '%字符串%'
* STRBW : 以此字符串开头的内容,相当于标准sql中like '字符串%'
* STREW : 以此字符串结尾的内容,相当于标准sql中like '%字符串'
* STRAND : 包含在某区间内的内容,如标准sql中like 'a-z',那么他只能是a到z的字母
* STROR : 不包含在某区间内的内容,如标准sql中like '!a-z',那么他只能是数字或其他的符号
* STRRX : 组合式结构,如标准sql中like "a"!b-m"#"
* NUMEQ : 数值大小一样 相当于标准sql中 where a='1'
* NUMGT : 数值大于某一值 相当于标准sql中 where a>'1'
* NUMGE : 数值大于等于某一值 相当于标准sql中 where a>='1'
* NUMLT : 数值小于某一值 相当于标准sql中 where a<'1'
* NUMLE : 数值小于某一值 相当于标准sql中 where a<='1'
* NUMBT : 数值处于某一数值区间,相当于标准sql中 where a> 1 and a < 10
* NUMOREQ : 数值不处于某一数值的区间,如果是a大于1,小于10的话,那这个表达式右边的内容应该相当于标准sql中 where a< 1 or a > 10
附排序
* STRASC : 按字面大小的升序排序
* STRDESC : 按字面大小的降序排序
* STRASC : 按数字大小的升序排序
* STRDESC : 按数字大小的降序排序
删除数据
tctmgr out players 2
#确认结果
tctmgr list -pv players
1 name 莫斯 country 新西兰 classid 1000003800 createtime 2010-05-18 09:21:00
4 name 德泽乌 country 荷兰 classid 1000003800 createtime 2010-05-18 09:18:22
3 name 克劳奇 country 英格兰 classid 1000003800 createtime 2010-05-18 09:18:07
5 name 温特拉 country 希腊 classid 1000003800 createtime 2010-05-18 09:18:34
删除数据库
rm players (数据库所在的路径)