0x02 Berkeley DB XML 之运行Shell

1. BDB XML之运行Shell

1.1 下载BDB XML 二进制文件

  1. 首先打开官网的下载页面 Oracle Berkeley DB Downloads
  2. 下载适合自己电脑的安装包
  3. 我的电脑是64为就下载按照我的电脑是64为就下载x64
    在这里插入图片描述

注意:*.msi 是二进制编译好的文件, .zip 和.tar.gz 是windows 和linux
压缩的未编译的源码文件,我们要下载二进制编译好的文件

默认安装路径是:

C:\Program Files\Oracle\Berkeley DB XML 6.1.4\bin

1.2 配置环境变量

新建 CLASSPATH 环境变量,配置如下:
在这里插入图片描述
path路径追加如下:

C:\Program Files\Oracle\Berkeley DB XML 6.1.4\bin

1.3 运行Shell 命令

如果是默认路径安装,dbxml.exe 位置在
C:\Program Files\Oracle\Berkeley DB XML 6.1.4\bin

1.3.1 进入db xml Shell

刚才我们已经配置过环境变量,因此现在如果想要运行这个shell命令,只需要打开我们操作系统的命令行窗口,输入:

dbxml

便可以进入dbxml shell 中。
效果如下所示:
在这里插入图片描述

我们可以将看到dbxml>提示符,这个提示符号后面跟应输入的命令。 大多数命令都是简单的一行命令。
但是,有些是更复杂的XQuery示例,它们将跨越多行。 每个示例都将显示要输入的命令和结果输出。
当输出太长时,省略号(…)将用于缩写中间结果。

使用BDB XML时,我们会发现文档内容存储在container(容器)中。 这是BDB XML中的第一个基本概念:container(容器)包含XML文档的集合。 容器内的文档可能共享也可能不共享相同的模式。

1.3.2 创建一个Container(容器)

要开始探索学习BDB XML,我们首先需要创建一个container(容器)。
比如我们想要创建一个简单的电话簿数 容器的名称是phone.dbxml。
输入命令如下:

createContainer phone.dbxml 

执行成功后会显示如下:
在这里插入图片描述
我们可以看到C:\Users\fairy\根目录下生成了一个phone.dbxml在这里插入图片描述
这是新的文档存储容器。 容器包含XML数据,索引,文档元数据和任何其他有用信息,并由BDB XML管理。

永远不要直接编辑容器(因为当你打开之后可以看到是乱码 -_-!!!)始终允许BDB XML库为您管理容器。 '.dbxml’扩展有助于识别磁盘上的BDBXML数据库,但它只是一个非严格要求的命名约定。

除了创建容器之外,BDB XML shell还自动打开它并使其可供我们使用。

1.3.3 向容器DB中添加数据

比如我们想要添加如下的内容:

<phonebook>
    <name>
        <first>Tom</first>
        <last>Jones</last>
    </name>   
    <phone type="home">420-203-2032</phone>
</phonebook>

那么继续在命令行下输入以下命令

putDocument phone1 '<phonebook>
    <name>
        <first>Tom</first>
        <last>Jones</last>
    </name>   
    <phone type="home">420-203-2032</phone>
</phonebook>' s

执行成功后可以看到
在这里插入图片描述
我们再添加一组这样的数据

<phonebook>
    <name>
        <first>Lisa</first>
        <last>Smith</last>
    </name>   
    <phone type="home">420-992-4801</phone>
    <phone type="cell">390-812-4292</phone>
</phonebook>

在命令行下输入以下命令:

putDocument phone2 '<phonebook>
    <name>
        <first>Lisa</first>
        <last>Smith</last>
    </name>   
    <phone type="home">420-992-4801</phone>
    <phone type="cell">390-812-4292</phone>
</phonebook>' s

执行成功如下所示:
在这里插入图片描述

值得注意的是:XML文档内容包装在单引号字符中,命令由s字符终止。 这表明我们正在使用字符串添加新文档。
单引号字符用于任何包含空格或需要跨越多行的命令参数。

1.3.4 从容器DB中查询数据

现在容器中已经有了两条数据。 接下来我们学习仅基于XPath语句的基本XQuery查询。 后续部分将演示更复杂的XQuery语句。

XPath是XQuery规范的核心部分。 它与SELECT语句在SQL中的功能大致相同。 它主要用于识别数据集中的数据子集。

命令行下输入以下命令进行查询

query '
collection("phone.dbxml")/phonebook/name/last/string()'

执行成功后如图所示:
在这里插入图片描述

注意:string()函数不返回目标节点,而是返回目标节点的字符串值。

要打印查询的结果输入命令

print

可以看到如下结果
在这里插入图片描述

注意:这里先执行查询命令,然后再执行print才行
print 命令会默认打印最近查询的结果集
否则会出现错误:
在这里插入图片描述

找到Lisa的家庭电话号码,输入以下命令查询:

query '
collection("phone.dbxml")/phonebook[name/first = "Lisa"]/phone[@type = 
"home"]/string()'

执行成功如下所示:
在这里插入图片描述
打印查询结果输入以下命令

print

执行成功如下所示:
在这里插入图片描述
如果查询420开头的,那么输入如下命令

query '
collection("phone.dbxml")/phonebook/phone[starts-with(., "420")]/string()'

执行成功后如下所示:
在这里插入图片描述
打印查询结果输入命令:

print

打印结果如下:
在这里插入图片描述
这些查询只是检索数据的子集,就像关系数据库中的基本SELECT语句一样。 每个查询由两部分组成。

  • 查询的第一部分标识要检查的文档集(相当于投影)。 这是通过诸如collection()之类的XQuery导航功能完成的。 在此示例中,collection(“phone.dbxml”)指定我们要应用查询的容器。
  • 第二部分是XPath语句(相当于一个选择)。 第一个示例的XPath语句是/ phonebook / name / last / string(),它基于我们的文档结构,将检索所有姓氏并将它们显示为字符串。

理解XPath是理解XQuery的第一步。

我们也可以使用union运算符(“|”)和collection()函数对多个容器执行查询。 例如,要查询容器c1.dbxml和c2.dbxml,您将使用以下表达式:

(collection("c1.dbxml") | collection("c2.dbxml"))/name/string()

猜你喜欢

转载自blog.csdn.net/hadues/article/details/87373819