发布网友 发布时间:2022-04-08 08:51
共2个回答
懂视网 时间:2022-04-08 13:13
powershell可以玩nosql数据库吗?答案是肯定的。只要这个数据库兼容.net,就可以很容易地被powershell使用。
发文初衷:世界上几乎没有讲powershell调用nosql的帖子,更没有讲powershell调用litedb的。只有寥寥powershell调用monodb的代码。
初稿,会更新。有错误欢迎指正,谢谢。
powershell,nosql,litedb,bson,数据库,powershell传教士
BSON是一种类似json的一种二进制形式的存储格式,简称Binary JSON。 它和JSON一样,支持内嵌的文档对象和数组对象,但是BSON有JSON没有的一些数据类型,如Date和BinData类型。
{"hello":"world"} 这是一个BSON的例子, 其中"hello"是键名,它一般是string类型, 后面的"world"是键值,它的类型一般是string,double,array,binarydata等类型。
bson存储记录的最大单位是Document,可以把这个Document理解为一条记录。
根据litedb手册中的说明,限制为: 每个数据库小于2GB;每个document小于1MB;
即 litedb---》表---》bson_Document---》bson_Document---》键值对
下为个人整理的应用场合,如有不妥,请斧正。
1 单机,绿色,中小量数据。单个库总内容小于1.8GB。
2 类似于sqlite,但sqlite是sql数据库,这个是nosql。即键值对,即每个库中数据只有一列。 即nosql数据库不适合存储行列数据。但数组,哈希表,和之间对象转换比sql数据库方便。 查询数据不用sql语法用函数。
暂时没有图形管理数据库的工具。
1 官网为: http://www.litedb.org/
2 github地址为: https://github.com/mbdavid/LiteDB/
3 我编译好的二进制包下载地址。
http://files.cnblogs.com/files/piapia/powershell_litedb.zip
含litedb的dll文件,litedb命令行,和chm版的手册,powershell脚本例子。
chm版手册是【DotNet开源大本营】http://home.cnblogs.com/u/asxinyu/ 做的,感谢他。
litedb命令行手册.txt 是我从命令行帮助中导出的。
LiteDB.LiteDatabase
LiteDB.BsonDocument
LiteDB.BsonMapper bson键值对<--->对象转换者类
LiteDB.JsonSerializer bson键值对<--->json键值对转换类。
LiteDB.BsonArray bson数组
LiteDB.BsonValue bson值 布尔,日期,guid,object对象,bson值,字节数组,int32,int64,double,字符串,list,字典,等。
LiteDB.LiteFileStorage 存储文件
LiteDB.Query 查询类
摘自 http://www.cnblogs.com/asxinyu/p/dotnet_Opensource_project_LiteDB.html
------Query----- Query.All 返回所有的数据,可以使用指定的索引字段进行排序
Query.EQ 查找返回和指定字段值相等的数据
Query.LT/LTE 查找< 或 <= 某个值的数据
Query.GT/GTE 查找> 或 >= 某个值的数据
Query.Between 查找在指定区间范围内的数据
Query.In - 和SQL的in类似吧,查找和列表中值相等的数据
Query.Not - 和EQ相反,是不等于某个值的数据
Query.StartsWith 查找以某个字符串开头的数据
Query.Contains 查找包括某个字符串的数据,这个查询只扫描索引
Query.And 2个查询的交集
Query.Or 2个查询结果的并集
------linq-----
FindAll: 查找表或者集合中所有的结果记录
FindOne:返回第一个或者默认的结果
FindById: 通过索引返回单个结果
Find: 使用查询表达式或者linq表达式查询返回结果
Count() , Exists(),Min() , Max()
简单来说就是用字符串,日期等,构造键值对。用n个键值对组成bson_Document,然后增删查改这个bson_Document。
下列脚本 win8.1 + powershell 4.0 + litedb 1.02 测试通过。
# # # powershell_for_litedb v1.0.2 2015-08-30 $script:脚本存储路径 = Split-Path -Parent $myinvocation.mycommand.path $Env:Path+=";$script:脚本存储路径;" $script:数据库客户端目录 = ‘a:pscodelitedb‘ $script:数据库客户端文件名 = ‘LiteDB.dll‘ $script:数据库客户端绝对文件名 = $script:数据库客户端目录 + $script:数据库客户端文件名 $script:数据库文件名 = ‘test001.db‘ $script:数据库绝对文件名 = $script:数据库客户端目录 + $script:数据库文件名 if (test-path $script:数据库客户端绝对文件名) { [system.reflection.Assembly]::LoadFrom($script:数据库客户端绝对文件名) | Out-Null write-host "---LiteDB程序载入完成---" } else { exit } # 打开数据库,没有的话新建数据库 $数据库001 = New-Object LiteDB.LiteDatabase($script:数据库绝对文件名) #$数据库001.GetDatabaseInfo() [string]$查询表名 = $数据库001.GetCollectionNames() if ($查询表名 -eq "") { write-host "空数据库,无表" } #打开表,没有的话新建表 $表001 = $数据库001.GetCollection("aaaa") #$查询结果 = $表001.findall() #$查询结果 # ---------------插入----------------- $字符串 = ‘aa‘ $数字 = 123 $日期 = get-date $真假 = $true $数组 = "a","1","kkk" $哈希表2 = @{ name = $字符串; age = $数字 ; bron = $日期 ; sex = $真假 ; array = $数组; 嘻嘻 = ‘哈哈‘ } $json_哈希表2 = ConvertTo-Json -InputObject $哈希表2 $bson_哈希表2 = [LiteDB.JsonSerializer]::Deserialize($json_哈希表2) $bson_哈希表2 #‘---bend---‘ #$bson_哈希表.gettype() $表001.Insert($bson_哈希表2) # -------------插入键值对------------- [LiteDB.BsonValue]$值2 = ‘powershell 传教士 原创文章 2015-08-30,允许转载,但必须保留名字和出处,否则追究法律责任传教士。初稿,有错误欢迎指正,谢谢。‘ $键2 = ‘声明‘ $bson_Document = New-Object LiteDB.BsonDocument $bson_Document.add($键2,$值2) # 用 $null = $bson_Document.add($键2,$值2) 消除输出 $表001.Insert($bson_Document) #------------------查询-------------------- #查询必须输入键名,键值作为参数。 #返回的都是bson_Document,转换成json,再转换成哈希表对象。再取值。 $查询结果1 = $表001.find([LiteDB.query]::eq("name","aa")) "---1---" $查询结果1 $查询结果2 = $表001.find([LiteDB.query]::gt("age","124")) "---2---" $查询结果2 $查询结果3 = $表001.find([LiteDB.query]::StartsWith("嘻嘻","哈")) "---3---" $查询结果3
powershell玩转litedb数据库
标签:
热心网友 时间:2022-04-08 10:21
有效利用交互式环境 一般来说,PowerShell有两个主要的运行环境:PowerShell和PowerShell ISE。前者是PowerShell的运行环境,后者是PowerShell集成脚本环境,也就是编写脚本(.ps1)的地方。当然,你也可以使用记事本或者其他编辑器来编写脚本。对于初学者来说,一上来就写脚本绝对不是个好主意。但是如果有些人非这么做不可,或者*这么做(亲,你懂的),那么我也建议你善于利于交互式环境。写每一条脚本之前先运行一下,看看效果,如果正确,再复制到脚本中。当然,如果你已经对PowerShell有一定动力了,你就不用听我在这里乱盖了充分利用帮助文档 需不需要买本书呢?这个问题因人而异。我在学习PowerShell之初看了Mining出版社的《PowerShell in Action》,原版的。感觉人家写的真好,跟小说似的。看的时候都不想敲代码了,有点上瘾的那种感觉。可惜的是,我看过之后,好长时间没有碰PowerShell。后来再捡起PowerShell的时候,竟然想不起来那本书里写了点啥,看来以后还得再看一遍。 话说回来,不管你案头有没有参考书,帮助文档一定是会很有用的。关于帮助文档,你怎么看?我有两种看法,一个是在写代码的时候,稍微遇到不清楚的地方,我就会查帮助文档,或者找到合适的命令,或者确认某个参数的用法,很好用;另一种看法是,我把几个相关的帮助复制下来,打印出来,坐在工位一边喝茶一边看,或者早上上班的时候,在公交车上看。你要是看到699或者614上有一个男的,有凳子不坐,站在那里手里拿了几页打印的纸在看,上面是关于PowerShell的,那就是我读代码和学语法 国内很多语言入门的书,都有点教科书的倾向,一般都是先讲由来,接着是基本类型和运算符,然后是逻辑控制,再然后是文件和数据库处理,最后是某些重要领域的支持和处理方法。这类书的好处是,如果你能够耐着性子看下去,等到把书看完的时候,你就会有小成了。但问题是,我的耐心往往不够,宁愿把书拆开了,一点一点的看。结语 作为本篇结束,我有一句忠告,就是把你的兴趣当作一个你必须讨好的人,不要累着它,要惯着它,常常拿些小的成就感刺激它,这样它就会很配合,你也不会神经衰弱。