问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

PowerShell入门(三):如何快速地掌握PowerShell?

发布网友 发布时间: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的,那就是我读代码和学语法  国内很多语言入门的书,都有点教科书的倾向,一般都是先讲由来,接着是基本类型和运算符,然后是逻辑控制,再然后是文件和数据库处理,最后是某些重要领域的支持和处理方法。这类书的好处是,如果你能够耐着性子看下去,等到把书看完的时候,你就会有小成了。但问题是,我的耐心往往不够,宁愿把书拆开了,一点一点的看。结语  作为本篇结束,我有一句忠告,就是把你的兴趣当作一个你必须讨好的人,不要累着它,要惯着它,常常拿些小的成就感刺激它,这样它就会很配合,你也不会神经衰弱。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
分手后说过的话精选185句 分手说的精选113句 分手怎么挽回女朋友的句子精选162句 现在工作忙的要死,女朋友因为这跟我分手,我该怎么办? ...任意组成两个不同的两位小数,并把它们改写成以0.001为计数单位... m3/MW▪h怎么换算m3/s▪GW? 交通银行的刷卡金怎么使用呢? 什么时候刷卡金 ...突然前面两条腿好像断了一样 走路前面两腿都无法支撑 吃饭就坐着吃... 王者荣耀:伤害与回复兼备的杨戬,为何不受待见,真废了吗? 蓝底的电子版的照片如何改为无底色的照片?方法越简单越好! 怎么才能快速把图片的背景改为无色透明的??? 如何在第一时间知道美股三大指数涨跌情况 怎样设置图片只有图,而没有背景色? 用复星恒利炒美股安全吗 怎样查询美股巴雷厄姆指数 TF卡装上卡套当SD卡用,性能是不是会大打折扣? 问道去打变身卡是不是要带卡套? Psv的卡套里面放的小内存卡,是不是用什么内存卡放里psv都能用? 拼多多申请店铺需要什么费用? 如何把TF卡从SD卡套里取出来,但是不损坏卡套? 存储卡放上卡套速度会变慢吗 SD卡可以用卡套来代替么 现在手机套有好多是带卡包的,看起来很方便,问题是放卡会不会消磁?不要听说的要能够确认的。 几张银行卡放放在卡套里,久了会不会消磁?!那要怎样才不会 请问,为什么放卡的卡套,塑料的,用时间长了会鼓起来呢 什么叫卡套?在嘉惠买了一个卡套 能够装卡! 什么银行卡,什么的?放在一起能起到防止消磁的作用么? 卡套太紧怎么把卡放进去? 求个煮面的步骤,包括一些什么时候下油和盐的步骤。 请教cmd和powershell有什么不同,为啥数据库命令在cmd可以,在powershell里边不行 关于笔记本无法连接小米wifi 小米随身wifi在电脑用连接不上 电脑版淘宝网页如何退出 用手机网页登陆淘宝网电脑版,为什么我的淘宝已买宝贝打不开呢? 明明电脑下载了千牛为什么1688聊天的时候点击老是跳出叫我下载网址 淘宝卖家在苹果笔记本电脑上使用什么软件平台? 我明明安装了阿里旺旺,但点网页上卖家图标时,仍弹出网页说我没有安装,要我安装阿里旺旺。 淘宝旺旺问题,急死我了! 赣州那有工作服,校服等定做? 订做制服 制服厂家 你是咋看现在的职业装的? 一套学生制服170元,比教师制服便宜24/7,一套教师制服多少元? 如何使用sql server中的powershell插入数据 童年时光--手机二维码防伪查询6674566208670696 童年时光的产品怎么辨别真伪 work怎么读 童年时光dha怎么辨别真假? work的名词是什么? 防伪码第一次没注意直接又点了一次,这种情况怎么查真伪?