0

Marklogic数据库(Content Database)中的所有内容可以一次性提取出来吗?ML 是否提供任何类似的开箱即用解决方案。我阅读了有关 mlcp 的信息。对我来说,这看起来像是一个命令行实用程序。我想要的是一个可以作为 xquery 包含在模块 DB 中的函数。

4

3 回答 3

1

http://docs.marklogic.com/fn:collection将返回整个数据库,如果那是你真正想要的。

于 2013-06-26T14:59:31.733 回答
0

这取决于您所说的“提取”是什么意思……那是您想要的结果吗?一个大的级联文件?目录树?压缩文件?还要意识到,除了相当小的数据库大小之外,您必须逐步执行此操作,因为整个数据库无法存储在内存中。

寻找方法来实现这一点的地方是

https://docs.marklogic.com/xdmp:zip-create

您可以创建所有文档的单个 ZIP 文件,然后将其存储到文件系统中

https://docs.marklogic.com/xdmp:save 这仅在您可以将整个数据库保存在内存中时才有效。

或者您可以遍历所有文档并使用 xdmp:save 将它们一一保存

于 2013-06-26T14:10:46.190 回答
0

据我所知,除了 mlcp 和备份之类的东西,MarkLogic 的发行版中没有包含开箱即用的导出解决方案。如果有类似 Information Studio 的东西,但用于导出而不是导入,那就太好了。

但是,您将拥有所需的所有可用成分,并且您可以编写一些代码来相对容易地完成此操作。您通常为此采取的基本步骤是:

  • 识别您想要的文档,最好通过 URI 词典获取他们的 uri
  • 把这个列表分成几部分,比如说 100 个文档
  • 为从数据库中读取文档的每个块生成一个子任务,并使用 xdmp:zip-create 和 xdmp:save 等函数将它们写入磁盘,正如@daldei 建议的那样。
  • 也许有主任务和子任务将一些统计信息写入数据库。info: 和 infodev: 库提供了使用“票证”的功能,对此很有用。

于 2013-06-26T15:22:58.323 回答