powershell玩转litedb数据库

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:\pscode\litedb\‘
$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
时间: 2024-11-09 07:41:45

powershell玩转litedb数据库的相关文章

powershell玩转SQL SERVER所有版本

微软发布了最新的powershell for sql server 2016命令行客户端库.文章介绍了与之相关的实用方法. powershell 传教士 原创文章 2016-06-05,2016-06-30改 允许转载,但必须保留名字和出处,否则追究法律责任 powershell,sql server,2016,功能包,客户端,下载 powershell玩sql server就是比powershell玩mysql强! 问:那么问题来了,强在哪? 答:微软给我们做好了powershell+sqls

WPF应用程序防止关闭LiteDB数据库文件加载事件

在WPF应用程序的主窗口和它的Window.Loaded事件我得到一些数据从LiteDB数据库文件. var groupViewModel = new GroupsViewModel();ComboBoxGroupsName.ItemsSource = groupViewModel.GetGroups();的GetGroups方法是这样的: IEnumerable<GroupModel> groups;using (var db = new LiteDatabase(DbFilePath)){

powershell玩转xml之20问

powershell 传教士 原创文章 2014-01-30,2015-10-16改 允许转载,但必须保留名字和出处,否则追究法律责任 问:xml文件编码情况如何?答:为了更好的支持多字符,xml文件都是utf8或unicode格式了,用bat处理不了了. 问:xml文件最基本的格式如何?答:<?xml version="1.0" encoding="UTF-16"?> <根节点><根节点/>如上所述,必须有,且只有一个根节点.并

新霸哥带你轻松玩转Oracle数据库

接触过软件开发的朋友可能都会知道oracle,在开发的过程中,数据存储都可能会用到oracle的,因为oracle具有处理速度快,安全级别特别的高.但是有一个缺点就是比较的贵,只有一个大型的公司才有可能接触到的,看到这里可能很多的朋友一定很想了解oracle吧,下面新霸哥将带你走进oracle的世界. 首先介绍一下Oracle中对于字符串的处理 char varchar varchar2 nvarchar long clob这些都是oracle中常用的字符串类型,在这里用的比较多的就是varch

LiteDB源码解析系列(2)数据库页详解

1.LiteDB页的技术工作原理 LiteDB虽然是单个文件类型的数据库,但是数据库有很多信息,例如索引,集合,文件等.为了管理这些信息,LiteDB实现了数据库页的概念.页是一个拥有4096 字节的 存储相同信息的地址块.页也是操作磁盘文件(读写)的最小单元.LiteDB有6中页类型,类图如下: 1.1 BasePage BasePage是数据库页类型的父类,使用一个常量字段PAGE_SIZE定义了页的大小为4096个字节. 主要的属性说明如下: PageID:一个uint类型的ID,在Lit

exchange企业实战之WSB邮箱数据库备份

备份前言 即使企业中部署了数据库可用性租,常规的数据库备份和恢复还是管理员应该掌握的基本技能. WSB对exchange进行备份和恢复,这种操作建议在小规模的Exchange环境中使用,大.中型Exchange环境建议使用Microsoft System Center Data Protection Manager或者第三方工具,比如NBU. 备份注意事项 非DAG环境 非DAG环境使用WSB备份时,注意以下事项: 无需禁用Exchange服务器中的VSS Writer 使用VSS完整备份 第一

基于微软案例数据库数据挖掘知识点总结(Microsoft 时序算法——结果预算+下期彩票预测篇)

转载:http://www.cnblogs.com/zhijianliutang/p/4027175.html 前言 本篇我们将总结的算法为Microsoft时序算法的结果预测值,是上一篇文章Microsoft时序算法的一个总结,上一篇我们已经基于微软案例数据库的销售历史信息表,利用Microsoft时序算法对其结果进行了预测,并且相应形成了折线预测图和模型依赖属性,有兴趣的同学可以点击查看,但是上篇文章的能给出的只是一个描述趋势的折线图,从图中我们能分析出的知识也只能通过语言描述,而这里面缺少

Mac 上配置 PhpMyAdmin

一.配置自带的 apache 服务器环境 由于 PHP apache 环境在 Mac OS上是自带的,所以不需要另处下安装包,只需要简单配置一下即可.首先打开终端输入命令: sudo vim /etc/apache2/httpd.conf 其中有一行如下是别注释掉的,将其注释去掉即可. # LoadModule php5_module libexec/apache2/libphp5.so 之后重启 apache 即可, 命令如下: sudo apachectl restart 到 浏览器 中输入

Sharepoint升级系列教程(一)2007升级到2010

最近赶上Sharepoint 升级工作,在这里和大家分享一次我的Sharepoint2007升级到Sharepoint 2013的升级之旅. 首先介绍下环境,Windows Server 2008R2+Sqlserver2005的生产环境,做环境复制.在这里说下我的我的升级心路历程如下图: 其实这个心路历程中少一个步骤就是升级UI的过程,当然了在后面会给大家介绍到UI升级. 这里我是重新部署的Sharepoint2007的环境,然后把生产环境的数据库进行备份附加还原操作. Sharepoint2